Ваша текущая функциональность не будет работать, даже если она "сработает".Вы пытаетесь установить в базе данных опцию для всего сайта на основе устройства самого последнего посетителя.
Использование update_option()
здесь не в ваших интересах.Вам нужно программно изменить шаблон, который загружается во время выполнения, на основе устройства пользователя, используя фильтр template_include
- таким образом вы не сохраняете (полу) постоянные изменения в вашембаза данных, которая будет постоянно перезаписываться бесчисленным количеством раз любым пользователем и влиять на всех остальных пользователей.
Это будет выглядеть примерно так:
add_filter( 'template_include', 'so_52745088_homepage_template', 99 );
function so_52745088_homepage_template( $template ){
// Only execute on the front page, not pages/posts/cpts
if( is_front_page() ){
// Determine if mobile
if( wp_is_mobile() ){
// Make sure mobile homepage template is found
if( $home_template = locate_template( array( 'homepage-mobile.php' ) ) ){
return $new_template;
}
}
}
return $template;
}
Если у вас нет отдельногошаблон страницы для мобильных устройств, и это просто обычная отдельная страница, тогда вы можете посмотреть, используя wp_safe_redirect()
на любом количестве хуков, общим является template_redirect
,который в конечном итоге будет выглядеть так:
add_action( 'template_redirect', 'so_52745088_homepage_redirect' );
function so_52745088_homepage_redirect( $template ){
// Only execute on the front page, not pages/posts/cpts
if( is_front_page() ){
// Determine if mobile
if( wp_is_mobile() ){
wp_safe_redirect( 'mobile' );
exit;
}
}
}