是否有可能以程序方式切换Wordpress主题?例如,当某个浏览器(找到一个可以检测到它的插件)使用另一个主题时?
我希望能够提供过时的浏览器(IE7及更低版本,低于Saf和FF 3 e.d.)和移动浏览器与其他浏览器不同的主题。
我找到了方法switch_theme然而这不能做我期望的事情(当我在functions.php中调用它时出现空白错误),如
switch_theme('twentyten', 'stylesheet');
或者我使用这种方法错了吗?
答案 0 :(得分:2)
如果你searched WordPress StackExchange,你会找到this:
add_filter( 'template', 'wpse_49223_change_theme' );
add_filter( 'option_template', 'wpse_49223_change_theme' );
add_filter( 'option_stylesheet', 'wpse_49223_change_theme' );
function wpse_49223_change_theme($theme)
{
if ( wp_is_mobile() )
$theme = 'twentyten';
return $theme;
}
wp_is_mobile
是一个内置的WordPress功能,转载如下:
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;
}
答案 1 :(得分:-1)
switch_theme
全局切换整个网站/访问者的主题!
以下是插件,可让您预览/切换当前会话的主题暂时(以预览具有不同主题的网站):
https://wordpress.stackexchange.com/questions/161187/activate-different-theme-for-temporary-preview
您只需修改其中一个代码,然后在登录中添加 MOBILE detection 代码。