WPML
ステータス
解決済み
報告対象
WPML Multilingual & Multicurrency for WooCommerce 4.11.6
解決されたバージョン
4.12.0

問題の概要

WooCommerceには、ユーザーが商品を簡単にフィルターできる価格で絞り込みウィジェットが用意されています。

現在、弊社のマルチ通貨機能を使用している場合、セカンダリ通貨では最小値と最大値は正しく表示されますが、フィルターにはデフォルト言語の価格が使用されます。これにより、誤った結果が表示されます。

回避策

先に進む前に、サイトの完全なバックアップを作成してください。その後、次の手順を実行します。


  1. WooCommerce Multilingualフォルダーを開きます。

  2. /woocommerce-multilingual/inc/currencies/class-wcml-multi-currency-prices.phpファイルを見つけます。

  3. 620行目に移動します。

  4. 以下のコードを:
    $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'] );

    次のように変更します:

    $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'] );

すべての既知の問題 →