Skip Navigation

Resolved

Resolved in: 4.10.0

Symptoms

Due to malformed data saved in the database, it happens that product attribute label translations are not displayed on the product page.

Workaround

We are working on a fix for this issue, in the meanwhile, you can use the following patch, please do that only on a test site and if you are comfortable with editing PHP code and only after you have made sure you have a fully working backup of your site.

The follwoing patch is to be appllied in the file “wp-content/plugins/woocommerce-multilingual/inc/class-wcml-attributes.php” on line 379:

Replace the following code (the whole method “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;
}

With:

	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

We’ve releassed a beta which should solve this issue. Please, keep in mind that it is a beta version which is under testing and shouldn’t be used in production sites. You can download it here:

Downloads

9 Responses to “Woocommerce Attributes Label Translations Are Not Showing”

  1. Hi,

    i have a problem with function wpml_collect – “Uncaught Error: Call to undefined function wpml_collect()”

    Could you please tell me how to solve this problem?

  2. Problem solved with this queries:
    DELETE FROM `wp_postmeta` WHERE `meta_key` = 'attr_label_translations' AND meta_value LIKE '%a:1:%'
    and
    DELETE FROM `wp_postmeta` WHERE `meta_key` = 'attr_label_translations' AND meta_value LIKE '%a:1:%'