WPML
Status
Gelöst
Gelöst in
4.12.0

Übersicht über das Problem

Nach der Übersetzung eines Produkts sind Produktvariationen in der Standardsprache im Frontend manchmal nicht mehr sichtbar.

Der Grund dafür ist, dass der Transient der Variation im übersetzten Sprachcode anstatt im Sprachcode der Standardsprache gespeichert wird. Der Transient für untergeordnete Elemente eines variablen WooCommerce-Produkts kann manchmal mit falschen Werten gefüllt werden, wenn er auf der Seite in einer anderen Sprache berechnet wird.

Leider konnten wir nicht feststellen, in welchem Kontext dies auftritt.

Problemumgehung

Bis wir weitere Informationen zum Kontext haben, empfehlen wir, das folgende Snippet zur Datei functions.php Ihres Themes hinzuzufügen:

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

Alle bekannten Probleme →