隐藏多站点子域上的活动主题

时间:2012-04-26 作者:Anca F

是否可以在网络中隐藏活动主题,以便子域用户看不到它们可用?

问题是我在网络上安装了10个主题,子域用户在外观->主题下看到未分配给他们的主题,并激活其他主题。我正在尝试删除子域管理员的此功能。

谢谢

2 个回复
SO网友:William

您可以删除\'switch_themes\' 来自\'administrator\' 角色,该角色应防止常规管理员(而不是网络超级管理员)切换其主题。尝试以下操作:

add_action(\'admin_init\', \'custom_remove_switch_themes_role_from_admins\');
function custom_remove_switch_themes_role_from_admins(){
  global $wp_roles;
  $wp_roles->remove_cap(\'administrator\', \'switch_themes\');
}
编辑:

通过对上述函数进行更广泛的测试,我注意到了一些问题,当我删除了一个cap,然后在完成测试时没有显式地重新添加它(它似乎实际上是从数据库中删除它,而不仅仅是针对当前页面)。这没关系,但要小心!如果您对此不太满意,请尝试以下方法,它会拦截所有角色的功能,而不仅仅是管理员(请注意,网络管理员被排除在外,因为他们拥有所有功能):

add_filter(\'user_has_cap\', \'custom_remove_switch_themes_capability\', 10, 3);
function custom_remove_switch_themes_capability($all_caps, $caps, $args){
  if (\'switch_themes\' == $args[0]) // You can chain additional caps (using or) here if desired
    return array();
  else
    return $all_caps;
}

SO网友:kaiser

如果您不介意使用jQuery解决方案:

function wpse50333_hide_current_theme()
{
    echo \'<script type="text/javascript">
        jQuery( \'#current-theme\' ).prev( \'h2\' ).hide();
        jQuery( \'#current-theme\' ).hide();
    </script>\';
}
add_action( \'admin_footer\', \'wpse50333_hide_current_theme\' );

结束

相关推荐

为什么Wordpress w/Nginx MultiSite只允许管理员上传ZIP插件,而不允许上传主题?

Wordpress 3.3多站点/NginX。我可以上传所有我想要的ZIP格式的插件,但我不能上传一个压缩的主题,而且它的大小不能超过2兆克。我找不到这些愚蠢的规则在哪里。有没有办法只使用SFTP?在这一点上,我将与黑客们碰碰运气,但只有ssh的生活简直是悲惨的地狱。请给我一个提示,告诉我如何从我的电脑中以zip文件的形式将主题发送到服务器上。谢谢。user www-data; worker_processes 4; error_log /var/log/nginx/nginx.log