Задать вопрос
@Apple

Как понизить приоритет функции в PHP?

В своем магазине на 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);
  • Вопрос задан
  • 209 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@IceJOKER
Web/Android developer
Нужно сохранить текущую валюту в сессии и при определение по геолокации проверять, есть ли там значение, если нет, то определяем по геолокации.
а вот переключатель не смотрит ни на что и просто меняет валюту и сохраняет в сессию
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽