- ステータス
- 解決済み
- 解決されたバージョン
- 4.12.0
問題の概要
商品を翻訳した後、デフォルト言語の商品バリエーションがフロントエンドに表示されなくなることがあります。
これは、バリエーションのトランジェントがデフォルト言語コードではなく、翻訳された言語コードで保存されるためです。別の言語のページ上で計算された場合、WooCommerceのバリエーション商品の子要素のトランジェントに誤った値が格納されることがあります。
残念ながら、どのような状況でこれが発生するのかは特定できていません。
回避策
詳細な状況が判明するまで、お使いのテーマのfunctions.phpファイルに以下のスニペットを追加することをお勧めします。
/**
* Prevent issues with product variations transient when it's
* computed in a secondary language page for a product in
* the default language.
*/
add_filter( 'woocommerce_variable_children_args', function( $args ) {
global $sitepress;
$parseQueryAction = [ $sitepress, 'parse_query' ];
if ( remove_action( 'parse_query', $parseQueryAction ) ) {
add_action( 'setted_transient', function() use ( $parseQueryAction ) {
add_action( 'parse_query', $parseQueryAction );
} );
}
return $args;
} );