如果当前用户是管理员,如何切换主题?

时间:2015-06-03 作者:Riffaz Starr

我正在尝试将当前自定义主题切换到twenty fifteen 主题(如果访问者是管理员)。因此,我在我的custom theme functions.php

/*** Switching theme to Admin ***/
add_action( \'setup_theme\', \'switch_user_theme\' );
function switch_user_theme() {
    if ( current_user_can( \'manage_options\' ) ) {
         $user_theme = \'Twenty Fifteen\';
         add_filter( \'template\', create_function( \'$t\', \'return "\' . $user_theme . \'";\' ) );
         add_filter( \'stylesheet\', create_function( \'$s\', \'return "\' . $user_theme . \'";\' ) );
    }
}
但是当管理员访问该站点时,仍然会显示自定义主题,而不是twenty fifteen为什么不切换到twenty fifteen 管理员访问站点时的主题?

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

你这样做有点迂回。WordPress有一个名为switch_theme():

add_action( \'setup_theme\', \'switch_user_theme\' );
function switch_user_theme() {
  if ( current_user_can( \'manage_options\' ) ) {
    switch_theme(\'twentytwelve\');
  } else {
    switch_theme(\'twentythirteen\');
  }
}
参数是所需主题的目录。

尽管如此,我还是忍不住认为这是个坏主意。当然,你可以做你需要的事情,而不必不断切换主题?

SO网友:AddWeb Solution Pvt Ltd

当前WordPress主题名称保存在WordPress数据库的wp\\U选项表中。简单的方法是使用update\\u option()函数,如下面的函数所示。将其粘贴到函数中。php文件。

function updateTheme($theme){
        update_option(\'template\', $theme);
        update_option(\'stylesheet\', $theme);
        update_option(\'current_theme\', $theme);
}
可以通过以下方式在自定义主题函数中调用该函数。php:

add_action( \'setup_theme\', \'switch_user_theme\' );
function switch_user_theme() {
        if ( current_user_can( \'manage_options\' ) ) {
                $theme = "twentyfifteen";
        }
        else {
                $theme = "default";
        }
        updateTheme($theme);
}
希望这能帮助你轻松解决问题。

谢谢

结束

相关推荐

Http站点和HTTPS wp-admin的URL损坏

我目前正在使用wordpress安装,其中所有网站都将以http显示,而https部分则受自签名证书的保护,并手动分发给管理员。我遇到的问题是,上传的图像都是用“https”前缀上传的,我想这是因为链接是以某种方式使用管理界面的完整路径生成的。您知道如何修复此行为以对上载的每个图像使用http协议吗?我真的不需要https,网站名称和URL都在http中。提前谢谢。一些规格:wordpress版本:4.2.1安装的插件:分类贴子小部件、Jetpack、贴子类型顺序、相对图像URL、wordpress SE