通过代码在WordPress中切换主题

4

是否可以通过编程方式切换WordPress主题?例如,在检测到某个特定浏览器(找到了一个插件来检测)时使用另一个主题?

我想要能够为过时的浏览器(IE7及以下版本,低于Saf和FF 3等)和移动浏览器提供与其他浏览器不同的主题。

我发现了switch_theme方法,但它不能像我期望的那样工作(当我在functions.php中调用它时,我会得到一个空白错误),如下:

switch_theme('twentyten', 'stylesheet');

或者我使用这种方法有误吗?

2个回答

3

如果你在 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;
}

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接