是否可以通过编程方式切换WordPress主题?例如,在检测到某个特定浏览器(找到了一个插件来检测)时使用另一个主题?
我想要能够为过时的浏览器(IE7及以下版本,低于Saf和FF 3等)和移动浏览器提供与其他浏览器不同的主题。
我发现了switch_theme方法,但它不能像我期望的那样工作(当我在functions.php中调用它时,我会得到一个空白错误),如下:
switch_theme('twentyten', 'stylesheet');
或者我使用这种方法有误吗?
如果你在 WordPress StackExchange 上进行了搜索, 你就会发现这个:
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;
}
switch_theme
全局切换整个网站/访问者的主题!
这里有一些插件,允许您在当前会话中临时预览/切换主题(以使用不同的主题预览他们的网站):
https://wordpress.stackexchange.com/questions/161187/activate-different-theme-for-temporary-preview
您可以修改其中一个代码,并在登录中添加移动设备检测代码。