WPML
Status
Resolvido
Resolvido em
4.12.0

Visão geral do problema

Após traduzir um produto, às vezes as variações do produto no idioma padrão não ficam mais visíveis no front-end.

O motivo disso é que o transient da variação é armazenado no código do idioma traduzido em vez do código do idioma padrão. O transient dos produtos filhos de um produto variável do WooCommerce às vezes pode ser preenchido com valores incorretos se for calculado na página em um idioma diferente.

Infelizmente, não conseguimos identificar em qual contexto isso está acontecendo.

Solução alternativa

Até que tenhamos mais informações sobre o contexto, sugerimos adicionar o seguinte snippet ao arquivo functions.php do seu tema:

/**
 * 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;
} );

Todos os problemas conhecidos →