Скрипт Wordpress GeoIP Redirect работает на 99% - PullRequest
0 голосов
/ 27 января 2020

Так что я некоторое время боролся с WPEngine за этот скрипт, но это история для другого дня. Нам нужен скрипт, который перенаправляет пользователей на язык своей страны. Пока что мы обслуживаем Японию, Китай, Великобританию и остальной мир (в Великобритании есть магазин, поэтому он должен быть отдельным сайтом). Мы используем гео-систему Wpengine для определения местоположения посетителей с помощью ip, поэтому сценарий очень прост, хотя у меня возникла небольшая проблема с остановкой перенаправления сценария при входе администратора. Я думаю, что должен быть более простой способ go о том, как я это сделал, так что не стесняйтесь написать мою попытку написания этого сценария перенаправления !!

function country_geo_redirect() {
$country = getenv('HTTP_GEOIP_COUNTRY_CODE');
$host = $_SERVER['HTTP_HOST'];
$path = $_SERVER['REQUEST_URI'];
$fpath = str_replace(array('en-gb/', 'zh-hans/', 'ja/'), '', $path);

if (strpos($path, 'wp-admin') == true || strpos($path, 'wp-login') == true || current_user_can('administrator') == true) return;

else if (strpos($path, 'en-gb') == false && $host == 'example.com' && $country == "GB" ) {
    wp_redirect('https://example.com/en-gb/' . $fpath, 301);
    exit;
} else if (strpos($path, 'ja') == false && $host == 'example.com' && $country == "JP" ){
    wp_redirect('https://example.com/ja/' . $fpath, 301);
    exit;
} else if (strpos($path, 'zh-hans') == false && $host == 'example.com' && $country == "CN" ){
    wp_redirect('https://example.com/zh-hans/' . $fpath, 301);
    exit;
} 
}
add_action('init', 'country_geo_redirect');

Итак, я попытался начать с проверки, содержит ли URL wp- admin или wp-login и остановите сценарий там, если это так, а также посмотрите, является ли пользователь администратором, и это позволяет мне нормально обходиться администратору, не проверяя код страны перед этим, но когда я вошел в систему, он не позволит я получаю базовый URL, не перенаправляя меня на en-gb. Это не большая проблема, но я хотел бы сделать это правильно только для наших целей тестирования.

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

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