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

所有已知问题

仍然遇到此问题?

如果更新无法解决问题,请提出支持问题,我们将与您一起排查。