首页课件丨教程安装教程禁止非管理员用户访问WP后台

禁止非管理员用户访问WP后台

B2主题为用户提供的前端用户中心,但是当某些用户试图访问WP后台的时候,会出现以下两种情况,用户体验不佳。

1、访问 域名/wp-admin/ 后,使用非管理员登录后,会被自动重定向到 域名/wp-admin/profile.php,出现下图界面:

禁止非管理员用户访问WP后台 - 非管理员登录后显示该页面
非管理员登录后显示该页面

2、在上一步登录以后,删除后面的 profile.php,直接访问 域名/wp-admin/,会看到如下界面:

禁止非管理员用户访问WP后台 - 直接访问wp-admin的界面
直接访问wp-admin的界面

解决方案

最终处理方式:非管理员用户登录后,不能让他访问wp-admin页面,同时重定向他返回前端用户中心的个人设置页面。所用代码如下:

  1. /**
  2. * 禁止非管理员(或低于特定角色)的用户访问wp-admin
  3. * https://www.yinliduo.cn/docs/b2/b2-dev/stop-access-admin
  4. */
  5. function b2child_child_stop_access_admin() {
  6. //预留钩子配置可访问后台的用户能力 https://wordpress.org/support/article/roles-and-capabilities/
  7. $capability = apply_filters( 'b2_admin_capability', 'manage_options' ); //默认管理员
  8. if ( is_admin() && ! current_user_can( $capability ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
  9. $user_id = get_current_user_id();
  10. if( $user_id ) {
  11. $redirect = get_author_posts_url($user_id); // 获取前端个人中心页面
  12. global $pagenow;
  13. if( $pagenow =='profile.php' || $pagenow =='user-edit.php' ) {
  14. $redirect = esc_url( $redirect.'/settings' ); //获取前端个人资料设置页面
  15. }
  16. wp_logout(); //自动注销当前用户在WP后台的登录状态
  17. wp_safe_redirect( $redirect ); // 将用户重定向到正确的页面
  18. exit;
  19. }
  20. }
  21. }
  22. add_action( 'admin_menu', 'b2child_child_stop_access_admin' );

以上代码已提交给春哥,后续版本添加。

自定义受限的用户角色

默认是没有 manage_options 能力的用户(即非管理员)会受限,我们也预留了过滤钩子b2_admin_capability,允许自定义用户能力,比如想让 编辑 不受限,参考代码如下:

  1. /**
  2. * 自定义访问后台的角色能力
  3. * https://www.wpdaxue.com/docs/b2/b2-dev/stop-access-admin
  4. */
  5. add_filter( 'b2_admin_capability', function () {
  6. //用户能力查看 https://wordpress.org/support/article/roles-and-capabilities/
  7. return 'manage_categories'; //修改这个用户能力,这里的角色为 编辑
  8. } );

好了,教程到此结束,有什么问题在下面留言。

声明: 1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:ceo@zunw.cn,我们将第一时间处理! 2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持 3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明。

给TA赏金
共{{data.count}}人
人已赏金
安装教程

MUI实战项目视频教程仿糗事百科UI设计功能实现含源码

2022-11-13 17:37:39

安装教程

WP一键屏蔽文章外链

2022-11-15 0:58:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
MySSL 安全签章