Правильное использование 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
для дополнительной информации проверьте исходный код функции