通过代码Wordpress切换主题

时间:2012-02-06 21:40:29

标签: wordpress themes

是否有可能以程序方式切换Wordpress主题?例如,当某个浏览器(找到一个可以检测到它的插件)使用另一个主题时?

我希望能够提供过时的浏览器(IE7及更低版本,低于Saf和FF 3 e.d.)和移动浏览器与其他浏览器不同的主题。

我找到了方法switch_theme然而这不能做我期望的事情(当我在functions.php中调用它时出现空白错误),如

switch_theme('twentyten', 'stylesheet');

或者我使用这种方法错了吗?

2 个答案:

答案 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)

NO!

switch_theme全局切换整个网站/访问者的主题!

以下是插件,可让您预览/切换当前会话的主题暂时(以预览具有不同主题的网站):

https://wordpress.stackexchange.com/questions/161187/activate-different-theme-for-temporary-preview

您只需修改其中一个代码,然后在登录中添加 MOBILE detection 代码。