- Статус
- Решено
- Решено в
- 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;
} );