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