У меня есть два сайта, один для США, который находится в корне домена .com, и у меня есть копия сайта в каталоге / uk, предназначенная для клиентов из Великобритании.
Вот код, который я настроил, который отлично работает, когда я использую тестовую пустую страницу php, которую я использую с классом Geoplugin.
<?php ob_start();?>
<?php require_once('geoplugin.class.php');$geoplugin = new geoPlugin(); ?>
<?php $country = $geoplugin->locate();?>
<?php
$countryName= $geoplugin->countryName ;
$ukCountry = 'http://www.mywebsite.com/uk/';
$mainSite = 'http://www.mywebsite.com/';//UK
if ($countryName =="United Kingdom")
{
header('Location: '.$ukCountry);
}else{
header('Location: '.$mainSite);
?>
Я подключаюсь к вышеупомянутой странице через оператор включения и отлично работает в качестве теста.
Но я хочу, чтобы посетитель зашел на основной сайт, а затем проверил страну происхождения и, если это Великобритания, переходит к британской версии.
Я хочу установить это на сайт WordPress, но когда я размещаю оператор include, я получаю сообщение об ошибке
Предупреждение: невозможно изменить информацию заголовка — заголовки уже отправлены
Я много читал о буферизации вывода, и я попробовал несколько вещей, чтобы заставить его работать, но я не могу заставить его правильно пересылать.
Я знаю, что есть шанс бесконечного цикла с приведенным выше кодом, но я уберу оператор else, если это остановить.
По сути, я хочу, чтобы сайт проверял страну Великобритания, если это так, перешли на сайт Великобритании, а если нет, просто загрузите страницу в обычном режиме.
Любые предложения приветствуются.
Прежде всего вы можете использовать Maxmind для геотаргетинга.
Затем создайте plug_in в словесном режиме и используйте систему HOOK в рабочем режиме, чтобы взломать код с помощью init Hook.
Других решений пока нет …