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

Все известные проблемы

Всё ещё сталкиваетесь с этой проблемой?

Если обновление не устраняет проблему, отправьте запрос в поддержку, и мы разберемся в ней вместе с Вами.