- Statut
- Résolu
- Résolu dans
- 4.12.0
Aperçu de l’anomalie
Après la traduction d’un produit, les variations du produit dans la langue par défaut ne sont parfois plus visibles sur l’interface publique.
Cela s’explique par le fait que le transient de la variation est stocké dans le code de la langue traduite au lieu du code de la langue par défaut. Le transient des enfants d’un produit variable WooCommerce peut parfois être renseigné avec des valeurs incorrectes s’il est calculé sur la page dans une autre langue.
Malheureusement, nous n’avons pas pu identifier dans quel contexte cela se produit.
Solution de contournement
En attendant d’avoir plus d’informations sur le contexte, nous vous suggérons d’ajouter l’extrait suivant au fichier functions.php de votre thème :
/**
* 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;
} );