Aligatro
@Aligatro
Turn food and coffee into software...

Как в Wordpress реализовать перенаправление на мобильную версию сайта?

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

/*-- Переключение на мобильную версию сайта ссылкой --*/
 session_start(); // начинаем сессию
 if (isset($_REQUEST['version'])) { // перехватываем линк
        $_SESSION['version'] = $_REQUEST['version'];
}
function mobileview($on){ // создаем удобную функцию
$on=$_SESSION['version'] == 'mobile';
return $on;
}


Все работает супер, но я хотел бы сделать так, что-бы при первом попадании на сайт пользователя с мобильным браузером принудительно бросало на pda версию (но только 1 раз, что бы потом можно было переключиться на десктоп сессию). В общем сам вопрос: как это сделать?

P.s пытался сделать через пень колоду (куки и прочее мракобесие ):

if (wp_is_mobile()) {
        setcookie('mobile', '1', time()+9999999, '/', home_url());
        header('Location:' . home_url() . '/?version=mobile');
}

if ($_COOKIE['mobile'] != '1') {
   if ($_SESSION['version'] == 'desktop') {
    setcookie('mobile', '2', time()+9999999, '/', home_url());
    header('Location:' . home_url());
   }
}


Но понял, что изобретаю велосипед и это можно решить куда проще. Да и вышеприведенный скрипт к сожалению не сработал.

Заранее огромное спасибо за помощь.
  • Вопрос задан
  • 5778 просмотров
Решения вопроса 1
Aligatro
@Aligatro Автор вопроса
Turn food and coffee into software...
Проблема все же решена =) Как и следовало ожидать решение оказалось до безобразия простым.
if( !isset($_SESSION['version']) && wp_is_mobile()) {
   wp_redirect( '/?version=mobile' ); 
exit;
}

wp_redirect можно заменить банальным header location, просто wordpress его почему-то адекватно не распознает.

P.s Кстати возник еще один вопрос, для того что-бы определить открыта ли сессия, что лучше использовать? isset, empty или $_SESSION['version'] == '' ? Просто кто-то говорит isset корректней, другие говорят этот метод не обрабатывается старыми браузерами, в общем я запутался =))

Спасибо за помощь =)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Codebaker
Всё умею, всё могу!
Я - пользователь мобильных устройств умоляю вас: не делайте мобильную версию сайта! Она не нужна. Уже сегодня бывают мобильные устройства с разрешением БОЛЬШЕ, чем в рабочих компьютерах. А ждать, пока загрузится сначала мобильная, а затем ещё и полная версия сайта в условиях жадно-медленных сотовых сетей - это такое мучение, что нормальных слов сходу подобрать не получается (привет большой тройке!). Огромное спасибо за понимание!
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы