WPML
Stato
Risolto
Segnalato per
WPML Multilingual & Multicurrency for WooCommerce 5.1.2
Risolto in
WCML 5.2.0
Plugin/tema correlato
WooCommerce
Tag dell’argomento
Bug

Panoramica del problema

Quando usi la funzionalità multivaluta di WPML Multilingual & Multicurrency for WooCommerce, il widget Filtra per prezzo mostra un intervallo di prezzo errato per le valute secondarie. Mostra sempre l’intervallo della valuta predefinita.

Soluzione alternativa

Assicurati di effettuare un backup completo del tuo sito prima di procedere.


  • Aggiungi il seguente snippet nel file functions.php del tuo 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 );

Tutti i problemi noti →