Правильное использование wp_is_mobile()?
Я разработал адаптивную тему и хочу отправить ее на wordpress.org. Перед отправкой я хочу использовать wp_is_mobile()
в моей теме, но согласно Справочнику функций/wp is mobile это плохая идея, потому что там говорится следующее:
Вы должны понимать, что эта функция не определяет конкретно мобильный телефон, так как планшет также считается мобильным устройством. Проверьте раздел Плагины для нескольких полезных альтернатив. Также её не следует использовать в темах.
Итак, если я использую её в functions.php моей темы таким образом:
add_filter('body_class','mobile_theme_body_class');
function mobile_theme_body_class( $classes ){
if ( wp_is_mobile() ){
$classes[] = 'mobile';
}
else{
$classes[] = 'desktop';
}
return $classes;
}
Будет ли моя тема отклонена?
Дополнительный вопрос:
Если я использую мою функцию как в коде выше и использую плагины кэширования (например, WP Super Cache), будет ли моя функция работать некорректно (не выполняться или давать ложные срабатывания)?
Спасибо за ваше время и ответы...

Простыми словами, функция wp_is_mobile()
не предназначена для стилизации вашей темы.
Как это работает:
Она сопоставляет некоторые нативные названия устройств в строке User Agent. Поэтому, если кто-то изменит эту строку и отправит ложную информацию, вы не сможете определить, какое это устройство.
И она не возвращает название устройства, а просто возвращает true
, если вы не на десктопе, иначе false
.
Как WordPress использует эту функцию: WordPress не использует её для стилизации или добавления CSS. WordPress использует её для добавления или изменения элементов, которые должны быть только на мобильных устройствах (независимо от размера и названия). Например, для добавления touch-скриптов, viewport, мобильных классов в заголовке админки, добавления мобильных кнопок.
Влияние кэширования: Если вы используете плагин кэширования, функция бесполезна. Так как ваш код не выполняется каждый раз, вы получаете один и тот же результат.
WordPress в основном использует эту функцию в бэкенде, и почти все плагины кэширования исключают кэширование в бэкенде или для авторизованных пользователей. Поэтому она работает корректно.

wp_is_mobile()
определяет устройство на основе HTTP_USER_AGENT
(это не связано с размером экрана)
wp_is_mobile
возвращает true или false в зависимости от значения $_SERVER['HTTP_USER_AGENT']
если $_SERVER['HTTP_USER_AGENT']
содержит Mobile (Android, IOS и т.д.) или Tablet, функция вернет true
, иначе вернет false
если $_SERVER['HTTP_USER_AGENT']
равен null, вернет false
для дополнительной информации проверьте исходный код функции
