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());
   }
}


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

Заранее огромное спасибо за помощь.
  • Вопрос задан
  • 5739 просмотров
Решения вопроса 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
Всё умею, всё могу!
Я - пользователь мобильных устройств умоляю вас: не делайте мобильную версию сайта! Она не нужна. Уже сегодня бывают мобильные устройства с разрешением БОЛЬШЕ, чем в рабочих компьютерах. А ждать, пока загрузится сначала мобильная, а затем ещё и полная версия сайта в условиях жадно-медленных сотовых сетей - это такое мучение, что нормальных слов сходу подобрать не получается (привет большой тройке!). Огромное спасибо за понимание!
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы