WPML
Estado
Resuelto
Resuelto en
4.10.0

Resumen del problema

Debido a datos mal formados guardados en la base de datos, ocurre que las traducciones de las etiquetas de los atributos del producto no se muestran en la página del producto.

Solución alternativa

Estamos trabajando en una solución para este problema; mientras tanto, puede usar el siguiente parche. Aplíquelo únicamente en un sitio de prueba, si se siente cómodo editando código PHP y solo después de asegurarse de tener una copia de seguridad completa y funcional de su sitio.

El siguiente parche debe aplicarse en el archivo «wp-content/plugins/woocommerce-multilingual/inc/class-wcml-attributes.php» en la línea 379:

Reemplace el siguiente código (todo el método «get_attr_label_translations»):

public function get_attr_label_translations( $product_id, $lang = false ) {
$trnsl_labels = get_post_meta( $product_id, 'attr_label_translations', true );</code>

if ( ! is_array( $trnsl_labels ) ) {
$trnsl_labels = [];
}

if ( isset( $trnsl_labels[ $lang ] ) ) {
return $trnsl_labels[ $lang ];
}

return $trnsl_labels;
}

Por:

	public function get_attr_label_translations( $product_id, $lang = false ) {
		$trnsl_labels = get_post_meta( $product_id, 'attr_label_translations', true );

		$remove_empty_values = function ( $values ) {
			return wpml_collect( $values )->filter()->toArray();
		};

		if ( ! $lang && is_array( $trnsl_labels ) ) {
			return wpml_collect( $trnsl_labels )
				->map( $remove_empty_values )
				->toArray();
		}

		if ( isset( $trnsl_labels[ $lang ] ) ) {
			return $remove_empty_values( $trnsl_labels[ $lang ] );
		}

		return [];
	}

WPML 4.4.0 Beta


Hemos lanzado una beta que debería resolver este problema. Tenga en cuenta que es una versión beta que está en fase de pruebas y no debe usarse en sitios de producción. Puede descargarla aquí:
https://wpml.org/account/downloads/

Todos los problemas conocidos →