WPML
Estado
Resuelto
Notificado para
WPML Multilingual & Multicurrency for WooCommerce 5.1.2
Resuelto en
WCML 5.2.0
Plugin/tema relacionado
WooCommerce
Etiquetas de temática
Bug

Resumen del problema

Al usar la función multimoneda de WPML Multilingual & Multicurrency for WooCommerce, el widget Filtrar por precio muestra un rango de precios inexacto para las monedas secundarias. Siempre muestra el rango de la moneda predeterminada.

Solución alternativa

Por favor, asegúrese de hacer una copia de seguridad completa de su sitio antes de continuar.


  • Añada el siguiente fragmento en el archivo functions.php de su tema:
    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 );

Todos los problemas conocidos →