- Статус
- Решено
- Заявлено для
- 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'] );