WPML
Statut
Résolu
Résolu dans
4.10.0

Aperçu de l’anomalie

En raison de données mal formées enregistrées dans la base de données, il arrive que les traductions des étiquettes d’attributs de produits ne s’affichent pas sur la page du produit.

Solution de contournement

Nous travaillons sur un correctif pour ce problème. En attendant, vous pouvez utiliser le correctif suivant. Veuillez le faire uniquement sur un site de test, si vous êtes à l’aise avec la modification de code PHP, et seulement après vous être assuré de disposer d’une sauvegarde complète et fonctionnelle de votre site.

Le correctif suivant doit être appliqué dans le fichier « wp-content/plugins/woocommerce-multilingual/inc/class-wcml-attributes.php » à la ligne 379 :

Remplacez le code suivant (toute la méthode « 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;
}

Par :

	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 Bêta


Nous avons publié une bêta qui devrait résoudre ce problème. Veuillez garder à l’esprit qu’il s’agit d’une version bêta en cours de test et qu’elle ne doit pas être utilisée sur des sites de production. Vous pouvez la télécharger ici :
https://wpml.org/account/downloads/

Toutes les anomalies connues →