Salta la navigazione

Questo è il forum di assistenza tecnica di WPML, il plug-in multilingue di WordPress.

La sua lettura è permessa a tutti, ma la pubblicazione è riservata esclusivamente ai clienti di WPML. Il team di WPML risponde sul forum 6 giorni su 7, 22 ore su 24.

Etichettato: 

Questo ticket contiene 3 risposte, ha 2 voci.

Ultimo aggiornamento da emanuele-mariaE 1 anno, 8 mesi fa.

Assistito da: Laura.

Autore Messaggi
Aprile 7, 2023 a 1:05 pm #13427313

emanuele-mariaE

Ho abilitato correttamente la geolocalizzazione in Woocommerce.

Ho installato e configurato WooCommerce Multilingual & Multicurrency per avere EUR e USD.

Funziona il cambio valuta in base alla geolocalizzazione (testato tramite VPN).

Adesso però avrei la necessità di ottimizzare questa casistica:
- forzare il cambio valuta in base all'indirizzo di spedizione (quindi se spedizione USA allora mostra USD altrimenti resta EUR)

Sto provando varie soluzione ma non riesco.

È possibile avere supporto?

Aprile 7, 2023 a 1:48 pm #13427647

Laura
Supporter

Lingue: Inglese (English ) Italiano (Italiano )

Fuso orario: Europe/Rome (GMT+01:00)

Salve,

grazie per averci contattato.

C'è un'opzione in WooCommerce per utilizzare la valuta dell'indirizzo di spedizione. Tieni presente che se l'utente ha un account verrà necessariamente utilizzata la valuta dell'indirizzo di fatturazione, per via del fatto che le tasse vengono calcolate su quest'ultimo. E' una limitazione di WooCommerce e non può essere modificata da WPML.

Per gli altri casi puoi usare questo hook https://wpml.org/wcml-hook/wcml_geolocation_get_user_country/

Aprile 11, 2023 a 7:57 am #13442543

emanuele-mariaE

Ciao Laura, ho usato questo codice e sembra funzionare tutto correttamente.

Lo metto qui nel caso possa servire a qualcosa.

function change_currency_based_on_shipping_address( $currency ) {
    if ( ( is_cart() || is_checkout() ) && WC()->customer ) {
        $country = WC()->customer->get_shipping_country();
        if ( ! $country ) {
            $country = WC()->customer->get_billing_country();
        }
        if ( $country ) {
            if ( 'US' === $country ) {
                return 'USD';
            } else {
                return $default_currency;
            }
        }
    }
    return $currency;
}
add_filter( 'woocommerce_currency', 'change_currency_based_on_shipping_address', 10, 1 );

un saluto a tutti