- ステータス
- 解決済み
- 報告対象
- WPML Multilingual & Multicurrency for WooCommerce 4.11.6
- 解決されたバージョン
- 4.12.0
問題の概要
WooCommerceには、ユーザーが商品を簡単にフィルターできる価格で絞り込みウィジェットが用意されています。
現在、弊社のマルチ通貨機能を使用している場合、セカンダリ通貨では最小値と最大値は正しく表示されますが、フィルターにはデフォルト言語の価格が使用されます。これにより、誤った結果が表示されます。
回避策
先に進む前に、サイトの完全なバックアップを作成してください。その後、次の手順を実行します。
- WooCommerce Multilingualフォルダーを開きます。
- /woocommerce-multilingual/inc/currencies/class-wcml-multi-currency-prices.phpファイルを見つけます。
- 620行目に移動します。
- 以下のコードを:
$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'] );