Я испытываю очень раздражающую проблему. Я создал свой веб-сайт с помощью медиазапросов и is_mobile (подумал, что is_mobile будет таким же, как меньшие экраны. Как глупо с моей стороны.), Но после некоторого тестирования, видимо, iPad что-то напортачил (ладно, на самом деле я так и сделал).
Все мои проблемы могут быть легко решены, если я исключу iPad из функции wp_is_mobile. Как мне переписать эту функцию?
function wp_is_mobile() {
static $is_mobile;
if ( isset($is_mobile) )
return $is_mobile;
if ( empty($_SERVER['HTTP_USER_AGENT']) ) {
$is_mobile = false;
} elseif ( strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile') !== false // many mobile devices (all iPhone, iPad, etc.)
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Silk/') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Kindle') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'BlackBerry') !== false
|| strpos($_SERVER['HTTP_USER_AGENT'], 'Opera Mini') !== false ) {
$is_mobile = true;
} else {
$is_mobile = false;
}
return $is_mobile;
}
Как бы я изменил это?
===
пока должен был проверять!==
- не знаю, как это произошло, но теперь я это исправил. Таким образом, приведенный выше ответ также должен сработать - чего я абсолютно не говорю, чтобы вы его приняли! Просто, по сути, наши ответы / функции делают то же самое - поэтому я просто хотел найти (и исправить), что было не так.Вы также можете использовать регулярно обновляемый PHP-класс Mobile Detect для создания пользовательской функции для обнаружения мобильных телефонов, исключая планшеты (например, iPad). На момент написания этого ответа репозиторий Github был недавно обновлен и теперь включает обнаружение новых планшетов Samsung 3 месяца назад.
Предполагая, что вы поместите нужный файл в каталог, который называется
/includes/
вашей темой, вы можете добавить этот код в файл functions.php.затем используйте функцию
md_is_mobile()
в качестве заменыwp_is_mobile()
.источник
Я знаю, что это старая версия, но я хотел обновить ее, добавив правильный способ WordPress для реализации предыдущих решений. Начиная с версии 4.9.0, вместо реализации другой функции они должны фильтровать результат wp_is_mobile (). Таким образом:
ОДНАКО Что действительно нужно было сделать, так это перекусить пулю и переписать тему для правильной работы на планшетах. Было / есть больше производителей планшетов, чем Apple.
источник
Я немного переписал (и, на мой взгляд, оптимизировал) вашу функцию:// РЕДАКТИРОВАТЬ:
Хорошо, еще раз ...
Напишите новую функцию, которая внутренне использует основную функцию, и расширьте ее:
Теперь вы можете использовать вашу новую
my_wp_is_mobile
функцию где угодно.источник
functions.php
файл. Яwp_is_mobile
...? Итак, что не работает (как вы хотели бы сделать)?if(!my_wp_is_mobile() )
боковую панель, она все еще не отображается. Из чего я делаю вывод, что функция не работает.