WPML
Estado
Resuelto
Resuelto en
4.12.0

Resumen del problema

Después de traducir un producto, a veces las variaciones del producto en el idioma predeterminado ya no son visibles en el front-end.

La razón de esto es que el transient de la variación se almacena en el código del idioma traducido en lugar de en el código del idioma predeterminado. A veces, el transient de los hijos del producto variable de WooCommerce puede completarse con valores incorrectos si se calcula en la página en un idioma diferente.

Lamentablemente, no pudimos identificar en qué contexto está ocurriendo esto.

Solución alternativa

Hasta que tengamos más información sobre el contexto, sugerimos añadir el siguiente fragmento de código al archivo functions.php de su 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 los problemas conocidos →