切换主题仅更改正在使用的样式表

时间:2012-04-24 作者:kel

我有一个插件,用于为特定用户切换主题进行开发。当以该用户身份登录时,他们会看到不同的样式表,但主题文件会起作用。php,标题。php等是其他所有人的活动主题。

我做错了什么?

function change_user_theme($template) {
    global $user_ID;

    if ( in_array( $user_ID, array( 5 ) ) ) {
        $template = \'fezmobile\';
    } else {
        $template = \'fezforprez\';
    }

    return $template;
}

add_filter(\'template\', \'change_user_theme\');
add_filter(\'stylesheet\', \'change_user_theme\');
add_filter(\'option_template\', \'change_user_theme\');
add_filter(\'option_stylesheet\', \'change_user_theme\');

2 个回复
最合适的回答,由SO网友:sanchothefat 整理而成

看看我的答案:

Switch Theme Through Options Panel

代码如下:

add_action( \'setup_theme\', \'switch_user_theme\' );
function switch_user_theme() {
    if ( in_array( wp_get_current_user()->ID, array( 5 ) ) ) {
         $user_theme = \'fezforprez\';
         add_filter( \'template\', create_function( \'$t\', \'return "\' . $user_theme . \'";\' ) );
         add_filter( \'stylesheet\', create_function( \'$s\', \'return "\' . $user_theme . \'";\' ) );
    }
}
您必须在setup_theme 行动

SO网友:Michael Giovanni Pumo

事实上,我找到了一个更好的解决方案,但只是在将上面的答案标记为答案之后。

<?php add_action(\'setup_theme\', \'switch_user_theme\');

function switch_user_theme() {
    if ( ! is_admin() && current_user_can( \'administrator\' ) ) {
         $user_theme = \'name-of-your-theme-directory\';
         add_filter( \'template\', create_function( \'$t\', \'return "\' . $user_theme . \'";\' ) );
         add_filter( \'stylesheet\', create_function( \'$s\', \'return "\' . $user_theme . \'";\' ) );
    }
} ?>
使用此代码而不是@sanchothefat提供的代码,函数如下:

<?php echo get_template_directory_uri(); ?>
现在将正常工作。

结束

相关推荐