Poznáš to. Nahádžeš do košíka XY veci za super ceny, prídeš na pokladňu a po zvolení krajiny sa ti cena navýši o DPH. No na vraždu. Našťastie však existuje jednoduchý snippet, ktorým si vieme upraviť polohu zákazníka a to na základe aktuálne zvoleného jazyka. Kód je písaný pre multijazyčný plugin WPML.
add_filter( 'woocommerce_customer_default_location', 'lava_change_default_location_country', 10, 1 );
function lava_change_default_location_country() {
$current_lang = apply_filters( 'wpml_current_language', NULL );
if($current_lang == 'sk') {
return "SK";
} else {
return "CZ";
}
}
Použijeme filter wocommerce_customer_default_location. Ten totiž platí pre celý web. Hook default_checkout_billing_country bohužiaľ funguje len na podstránke pokladne, takže ním nedosiahneme to, čo chceme.
Vo funkcií potom získame kód aktuálne zvoleného jazyka. Keďže sa mi nepodarilo zistiť, ako z WPML vytiahnuť kód krajiny a nie jazyka, použil som takýto jednoduchý if. Lebo $current_lang v českej verzií nevráti cz, ale cs. A kopec iných takýchto prípadov by sme našli, kedy by nám to nesedelo. Všetky kódy štátov pre Woocommerce tu. Pre WPML sa mi taký pekný zoznam nepodarilo nájsť.
2 Odpovede
Daj snipet aj pre Polylang
Ja bohuzial s polylangom nerobim, takze netusim, aku ma funkciu na vyvolanie kodu aktualneho jazyka. A tiez, ci ma rovnake language codes ako wpml.