цикл wp_redirect при использовании geoip - PullRequest
0 голосов
/ 26 сентября 2018

Я получаю бесконечный цикл перенаправления, который приводит к ошибке слишком большого числа перенаправлений при попытке перенаправить пользователя при обнаружении конкретной страны.

То, что я пытаюсь достичь, - это добавить в конецзапроса url параметр, который является языком и перенаправляет на ту же страницу, что приводит к тому, что он просматривает сайт на своем родном языке.

Вот что я сделал:

add_action('template_redirect', 'geoip_redirect');
function geoip_redirect()
{
    if (function_exists('geoip_detect2_get_info_from_current_ip')) {

         $user_info = geoip_detect2_get_info_from_current_ip();
         $country_code = $user_info->country->isoCode;
         $request_url = $_SERVER['REQUEST_URI'].'?lang=he';
         $url = get_site_url(null, $request_url);

         if ($country_code == 'IL') {
             wp_redirect($url);
             exit();
         }

     }
}

1 Ответ

0 голосов
/ 26 сентября 2018

Вам необходимо добавить условие, такое как проверка параметра lang, перед выполнением кода, иначе оно будет выполняться вечно.

add_action('template_redirect', 'geoip_redirect');
function geoip_redirect()
{
    if (function_exists('geoip_detect2_get_info_from_current_ip')) {
         if ( ! isset( $_GET['lang'] ) ) {
            $user_info = geoip_detect2_get_info_from_current_ip();
            $country_code = $user_info->country->isoCode;
            $request_url = $_SERVER['REQUEST_URI'].'?lang=he';
            $url = get_site_url(null, $request_url);

            if ($country_code == 'IL') {
               wp_redirect($url);
               exit();
            }
         }

     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...