让WordPress的默认角色用户无法进入后台

日期: 标签:WordPress教程 29 条留言
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我

     有些时候我们会用到WordPress的用户注册功能,但是限于WordPress的用户系统功能比较单调,除了登录和注册,我们可能不会让用户直接使用WordPress的后台,而是在前台编写个用户系统,或者使用WP User Frontend等插件自动在前台生成一个用户系统。

     WordPress后台 - 设置 - 常规中,我们可以设置注册用户的默认角色:

默认角色

     如果你不想让默认角色的用户进入WordPress后台乱逛,你可以在当前主题的functions.php中加入以下代码,然后使用默认角色的用户帐号登录,看是什么情况,是不是直接跳转到首页了呢?

if ( is_admin() && ( !defined( 'DOING_AJAX' ) || !DOING_AJAX ) ) {
  $current_user = wp_get_current_user();
  if($current_user->roles[0] == get_option('default_role')) {
    wp_safe_redirect( home_url() );
    exit();
  }
}

 

也许你会用到以下文章所介绍的功能:

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜博客 https://www.ludou.org/wordpress-not-allow-default-role-to-admin.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者,主业是淘宝店主,卖些工艺品,感兴趣可以到我的淘宝店看看(旺旺不提供技术咨询):西西弗sisyphe

29 条留言

点此留言
  1. 小菲

    沙发..支持!

  2. 一堵墙

    觉得没有必要开放注册什么的。

  3. 否子戈

    如果默认角色都不能进入后台,那么有可能就不能进行个人资料的更新,但一般的wordpress注册是通过发邮件,给一个随机密码,如果不进入后台进行密码更新,带来很大的不便。当然,可以用你之前发布过的注册页面控制代码让注册人直接在注册的时候设置密码。

    • Ludou

      @否子戈 这些功能可以在前台实现,不用WordPress的用户系统。

  4. ikbear

    测试。

  5. 电商侠

    非常有用,感谢ludou一直为我们提供这么多原创的wordpress教程文章。感谢。

  6. 麦田一根葱

    好文好文啊!前排严重支持~

  7. 日光博客

    我就不明白了 为啥要进入你的后台?

    • Ludou

      @日光博客 如果你要开放用户投稿等,有一种方法是开放注册让用户进入后台进行投稿。
      另外,WordPress已经不局限于单用户,WordPress做成了在线商城,难道你不要建个用户系统,怎么也得让用户能修改密码,查看订单之类的吧?这些就是所谓的用户系统。
      但用户系统不一定非得用户WordPress的用户后台。。。

    • 半人疯

      @日光博客 脾气有点爆哦~~

  8. 河马大叔

    请问你用的是哪家的主机呢?

  9. 木易小匠

    学习了哈。

  10. rong

    学习了,需要用这个功能做个小型的论坛~

  11. 1232

    支持

  12. Sola

    这个会影响Ajax吗?

    • Ludou

      @Sola 看具体问题咯

      • Sola

        @Ludou Ajax请求时,is_admin()是成立的,除非管理员登陆,否则所有前台的ajax请求都会失败,我以前用is_admin()禁止用户访问后台时会出这个问题,不知道怎么解决。我想是不是检测一下DOING_AJAX会有帮助?

        • Ludou

          @Sola 嗯。这个问题一直没发现,多谢提醒,你提供的方法是可行的。

          • Sola

            @Ludou 多谢更新,这个方法还是很实用的!

  13. 悠悠

    先谢过博主。回家414。

  14. 月色

    露兜你好^_^请问如果只允许管理员进入后台,其它角色都没有权限进入后台,怎样再额外增加某个作者进入后台的呢?

    想让某个作者可以进入后台,又不愿意把他设置为管理员。

    • Ludou

      @月色 if($current_user->roles[0] == get_option('default_role')) {

      改成(7777是你要排除的用户ID):

      if($current_user->roles[0] == get_option('default_role') && ($current_user->ID != 7777)) {

  15. 笨笨

    这样编辑个人信息这条就没用了啊,没用就没用吧,哈哈!

  16. helsinglee

    你的网站经常打不开

    • 露兜

      @helsinglee 抱歉,近段时间首页暂时关闭,临时主机也不是很稳定。

  17. 流浪的小喵

    我用了Chinese UserName这个插件,允许汉字作为用户名,就不管用了

  18. kid

    果然默认角色设置成管理员,是不是进后台也会跳转到首页。

  19. 天鸡部落

    可能这代码不能用于当前的wordrpess版本了,我刚使用后,网站都打不开了。从主机后台删除了代码后才恢复正常。

发表留言