WPML
状态
已解决
解决于
4.10.0

问题概述

由于数据库中保存的数据格式错误,会导致产品页面上不显示产品属性标签翻译。

临时解决方法

我们正在修复此问题。在此期间,您可以使用以下补丁。请仅在测试站点上执行此操作,并且确保您熟悉 PHP 代码编辑,以及已对站点进行了完整且可用的备份。

请将以下补丁应用于文件“wp-content/plugins/woocommerce-multilingual/inc/class-wcml-attributes.php”的第 379 行:

将以下代码(整个方法“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;
}

替换为:

	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


我们已发布了一个可以解决此问题的Beta 版。请注意,这是一款正在测试的Beta 版,不应在生产站点中使用。您可以在此处下载:
https://wpml.org/account/downloads/

所有已知问题 →