针对特定用户角色的网络多站点仪表板拦截器

时间:2013-02-05 作者:Joshc

我已经在WordPress的正常安装中使用了下面的函数一段时间了。

它只会阻止具有特定用户角色的用户,并将他们重定向到网站主页。

function wpse23007_redirect(){
  if( is_admin() && !defined(\'DOING_AJAX\') && ( current_user_can(\'subscriber\') || current_user_can(\'media\') ) ){
    wp_redirect(home_url());
    exit;
  }
}
add_action(\'init\',\'wpse23007_redirect\');

但是,当我在WordPress Multisite的子主题上安装此功能时,即使我是超级用户,它也会阻止我访问子主题的仪表板。

有人能帮我理解为什么会这样,以及如何改变上述情况,以免阻碍我吗?

1 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

您的所有角色检查都与子站点中的用户角色相关,我假设您不是该子站点中的用户。您还应该检查is_super_admin()

  if( !is_super_admin() && (is_admin() && !defined(\'DOING_AJAX\') && ( current_user_can(\'subscriber\') || current_user_can(\'media\') ) ) ){
    wp_redirect(home_url());
    exit;
  }

结束

相关推荐

在插件中对MultiSite使用Add_Option而不是Add_Blog_Option有什么错

我正在开发一个新插件,但这是我第一次保存它,它将把一个选项保存到数据库中。目前我正在使用add_option 我假设,-激活会失败,或者-将错误的值保存到wp_blogID_options表中因为我没有使用add_blog_option. 所有的posts / 我读过的文献(Wrox、Apress等)说我需要习惯add_blog_option. 但我所有的测试(和检查SQL表)都证明我错了。所以在制作插件(可以是单点安装或多站点安装)时,使用add\\u选项而不是add\\u blog\\u选项有什么错