Определение браузера в wordpress
Опубликовано: 01.09.2018
Недавно при работе над моим новым блогом про typo3 возникли небольшие сложности с шаблоном. Дело в том, что там используются какие-то скрипты, которые из текста делают картинки – выглядит достаточно красиво, поэтому я решил не убирать. Сложность заключатся в том, что под Internet Explorer эта опция работает не до конца и ссылка «нажимается» только при наведение на буквы заголовка статьи, а между ними или, например, внутри буквы «о» линк не хочет никак реагировать. В общем, решил добавить в конце анонса статьи ссылку «читать далее» , но выводить ее только для IE. Короче говоря, у нас возникает задача определения браузера пользователя в wordpress.
Как это часто бывает, вариантов решения задачи есть несколько. Привожу вам все, а вы уж решайте сами какой из них наиболее оптимальный и подходящий.
1. Во-первых, можно вспомнить классических CSS хак для подключения таблицы стилей специально для Internet Explorer.
Вы не поверите, но это в браузере!
<!--[IF IE 6]><link rel="stylesheet" type="text/css" media="screen" href="css/cssf-ie6.css" /><![endif]--> |
<!--[IF IE 6]><link rel="stylesheet" type="text/css" media="screen" href="css/cssf-ie6.css" /><![endif]-->
Его достаточно часто используют верстальщики. Так вот в этом css файле можно задать стиль для ссылки, что контролировал ее отображение. Используется при этом свойство display: none; Точнее оно именно ссылку скрывает, а в ИЕ нужно было бы наоборот ее показывать. В принципе, наверное, можно даже стиль прописать в HEAD для шаблона без подключения лишних файлов стилей.
Что такое виджеты и сайдбар при работе с wordpress?
2. Автор проекта maxsite предлагает несколько иной метод, но похожий на первый – написать функцию определения браузера. Например, можно использовать такой код:
function maxsite_testIE ( ) { $user_agent = $_SERVER [ 'HTTP_USER_AGENT' ] ; $browserIE = false ; if ( stristr ( $user_agent , 'MSIE 7.0' ) ) $browserIE = true ; // IE7 if ( stristr ( $user_agent , 'MSIE 6.0' ) ) $browserIE = true ; // IE6 if ( stristr ( $user_agent , 'MSIE 5.0' ) ) $browserIE = true ; // IE5 return $browserIE ; } |
function maxsite_testIE() { $user_agent = $_SERVER['HTTP_USER_AGENT']; $browserIE = false; if ( stristr($user_agent, 'MSIE 7.0') ) $browserIE = true; // IE7 if ( stristr($user_agent, 'MSIE 6.0') ) $browserIE = true; // IE6 if ( stristr($user_agent, 'MSIE 5.0') ) $browserIE = true; // IE5 return $browserIE; }
Размещает функцию в файл functions.php, а затем в любой файл шаблона, в зависимости от того, где нужно выводить текст или проверять условие браузера, добавляем строки:
<?php if ( maxsite_testIE ( ) ) { echo '<a href="http://www.mozilla-europe.org/ru/products/firefox/"> Не ущемляй себя!<br /> Установи нормальный браузер!</a>' ; } ?> |
<?php if ( maxsite_testIE() ) { echo '<a href="http://www.mozilla-europe.org/ru/products/firefox/"> Не ущемляй себя!<br /> Установи нормальный браузер!</a>'; } ?>
3. В принципе, ничего сложного. Первые 2 метода вполне могли бы использоваться для блогов и сайтов wordpress, если бы не наличие встроенного механизма определения браузера в самом wordpress . Многим данный факт неизвестен, поэтому они придумывают разные методы решения поставленной задачи. Но некоторые «умельцы» нашли в коде или в документации системы глобальные переменные, отвечающие за разные браузеры:
* $is_lynx * $is_gecko * $is_IE * $is_winIE * $is_macIE * $is_opera * $is_NS4 * $is_safari * $is_chrome * $is_iphoneПо умолчанию эти переменные установлены в False и принимают значение True как только загружаемая страница сайта использует тот или иной браузер. Не смотря на то, что переменные не поддерживают определение разных версий браузеров, они в моем случае весьма сгодятся.
Остается только зайти в файл шаблона блога и добавить условия проверки браузера по типу такого:
<?php if ( $is_IE ) { ?> <div class="fullpost"><a href=" <?php the_permalink ( ) ?> ">Читать далее »</a></div> <?php } ?> |
<?php if ($is_IE) { ?> <div class="fullpost"><a href="<?php the_permalink() ?>">Читать далее »</a></div> <?php } ?>
Сохраняем и тестируем его работоспособность. В моем случае все прошло как нельзя лучше, wordpress сама отлично справилась с определением браузера и нужная задача была решена. Вот так вот иногда система приятно удивляет.
P.S. Постовой. Одна из лучших настольных игр — денежный поток – игра экономической бизнес тематики.
Поисковая контекстная реклама — эффективный метод продвижения сайтов.