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

Все известные проблемы →