WPML
Статус
Решено
Заявлено для
WPML Multilingual & Multicurrency for WooCommerce 5.1.2
Решено в
WCML 5.2.0
Связанный плагин/тема
WooCommerce
Теги темы
Bug

Обзор проблемы

При использовании функции мультивалютности WPML Multilingual & Multicurrency for WooCommerce виджет Фильтр по цене отображает некорректный диапазон цен для вторичных валют. Он всегда показывает диапазон для валюты по умолчанию.

Обходное решение

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


  • Добавьте следующий фрагмент кода в файл functions.php Вашей темы оформления:
    use function WCML\functions\getClientCurrency;
    use function WPML\Container\make;
    
    add_filter( 'rest_request_after_callbacks', function( $response, $handler, $request ) {
    
    	if (
    		wcml_is_multi_currency_on()
    		&& 'GET' === $request->get_method()
    		&& 'products/collection-data' === substr( $request->get_route(), -24 )
    		&& ! empty( $request['calculate_price_range'] )
    	) {
    		$mc = make( \WCML_Multi_Currency::class );
    		$from_currency = $mc->get_default_currency();
    		$to_currency = getClientCurrency();
    		$data = $response->get_data();
    		$data['price_range']->min_price = $mc->prices->convert_price_amount( $mc->prices->unconvert_price_amount( $data['price_range']->min_price, $from_currency ), $to_currency );
    		$data['price_range']->max_price = $mc->prices->convert_price_amount( $mc->prices->unconvert_price_amount( $data['price_range']->max_price, $from_currency ), $to_currency );
    		$response->set_data( $data );
    	}
    
    	return $response;
    }, 10, 3 );

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