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

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