WPML

問題の概要

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

すべての既知の問題

まだこの問題が発生しますか?

アップデートしても問題が解決しない場合は、サポートのご質問をお寄せください。一緒に調査いたします。