WPML
Stato
Risolto
Risolto in
4.12.0

Panoramica del problema

Dopo aver tradotto un prodotto, a volte le variazioni del prodotto nella lingua predefinita non sono più visibili sul front-end.

Il motivo è che il transient della variazione viene memorizzato nel codice della lingua tradotta anziché nel codice della lingua predefinita. Il transient dei figli del prodotto variabile di WooCommerce può a volte essere popolato con valori errati se viene calcolato sulla pagina in una lingua diversa.

Purtroppo, non siamo riusciti a identificare in quale contesto ciò si verifica.

Soluzione alternativa

Fino a quando non avremo maggiori informazioni sul contesto, ti suggeriamo di aggiungere il seguente snippet al file functions.php del tuo 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;
} );

Tutti i problemi noti →