- 状态
- 已解决
- 解决于
- 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;
} );