В своем магазине на Woocommerce я использую несколько валют и их переключатель переключатель в виде выпадающего меню (<?php echo(do_shortcode('[currency_switcher]')); ?>). Есть код, который задает конкретную валюту по геолокации, но тогда перестает работать переключатель ручного режима. Не понимаю, как изменить код, чтобы или понизить приоритет функции или использовать ее только при первой загрузке? Чтобы работала геолокация, но вручную можно было бы поменять.
function geoIPLocator() {
global $woocommerce_wpml;
$currency='EUR';
$geo=new WC_Geolocation();
$geo->init();
$country=$geo::geolocate_ip($geo::get_ip_address());
if(isset($_SESSION['locator'])) {
if($_SESSION['locator']['IP']==$_SERVER['REMOTE_ADDR'] && strlen($_SESSION['locator']['IP'])>0) {
$woocommerce_wpml->multi_currency_support->set_client_currency($_SESSION['locator']['currency']);
return;
}
}
if($country['country']=="RU" || $country['country']=="BY") {
$woocommerce_wpml->multi_currency_support->set_client_currency('RUB');
$currency='RUB';
} else {
$woocommerce_wpml->multi_currency_support->set_client_currency('EUR');
$currency='EUR';
}
$_SESSION['locator']=array("IP"=>$_SERVER['REMOTE_ADDR'], "ISO"=>$country['country'], "currency"=>$currency);
}
add_action( 'init', 'geoIPLocator', 5);