Übersicht über das Problem
WooCommerce bietet Ihnen ein Widget Nach Preis filtern, mit dem Ihre Benutzer Ihre Produkte einfach filtern können.
Wenn Sie aktuell unsere Multicurrency-Funktion nutzen, werden Sie feststellen, dass in Sekundärwährungen die Werte für min und max korrekt angezeigt werden, der Filter jedoch die Preise aus der Standardsprache verwendet. Dies führt dazu, dass falsche Ergebnisse angezeigt werden.
Problemumgehung
Dieses Problem ist behoben. Ein Update auf die neueste Version behebt dies auf Ihrer Website, daher benötigen Sie diese Problemumgehung nur, wenn Sie noch nicht aktualisieren können.
Bevor Sie fortfahren, erstellen Sie ein vollständiges Backup Ihrer Website. Anschließend:
- Öffnen Sie Ihren WooCommerce Multilingual-Ordner.
- Suchen Sie die Datei /woocommerce-multilingual/inc/currencies/class-wcml-multi-currency-prices.php.
- Gehen Sie zu Zeile 620.
- Ersetzen Sie:
$args['where'] = str_replace( $wpdb->prepare( 'wc_product_meta_lookup.min_price >= %f', $min_price ), $wpdb->prepare( 'wc_product_meta_lookup.min_price >= %f', $min_price_in_default_currency ), $args['where'] ); $args['where'] = str_replace( $wpdb->prepare( 'wc_product_meta_lookup.max_price <= %f', $max_price ), $wpdb->prepare( 'wc_product_meta_lookup.max_price <= %f', $max_price_in_default_currency ), $args['where'] );
durch:
$args['where'] = str_replace( $wpdb->prepare( '%f<wc_product_meta_lookup.min_price', $max_price ), $wpdb->prepare( '%f<wc_product_meta_lookup.min_price', $max_price_in_default_currency ), $args['where'] ); $args['where'] = str_replace( $wpdb->prepare( '%f>wc_product_meta_lookup.max_price', $min_price ), $wpdb->prepare( '%f>wc_product_meta_lookup.max_price', $min_price_in_default_currency ), $args['where'] );