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


この問題を解決するベータ版をリリースしました。これはテスト中のベータ版であり、本番サイトでは使用しないでください。ここからダウンロードできます:
https://wpml.org/account/downloads/

すべての既知の問題 →