WPML
Statut
Résolu
Signalé pour
WPML Multilingual & Multicurrency for WooCommerce 5.1.2
Résolu dans
WCML 5.2.0
Extension/thème associé
WooCommerce
Étiquettes de sujet
Bug

Aperçu de l’anomalie

Lors de l’utilisation de la fonctionnalité multidevise de WPML Multilingual & Multicurrency for WooCommerce, le widget Filtrer par prix affiche une fourchette de prix inexacte pour les devises secondaires. Il affiche toujours la fourchette de la devise par défaut.

Solution de contournement

Assurez-vous d’effectuer une sauvegarde complète de votre site avant de continuer.


  • Ajoutez l’extrait de code suivant dans le fichier functions.php de votre thème :
    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 );

Toutes les anomalies connues →