WordPress判断用户角色和权限
其实判断WordPress用户角色和权限是非常少用的,对于普通的WordPress博主而言,可能这个功能不太常用,但是开放注册的WordPress而言,这个功能可能就会用到了。而子凡也就是因为需要做用户数据的整合及同步,在昨天子凡就发过一篇博客《WordPress数据库整合导致后台登录无权限解决方法》,其中就涉及到了WordPress用户的权限问题,所以这里子凡整理了一篇比较全面的文章,大家可以参考学习了解一下。
首先了解一下WordPress不同用户、不同角色的各级权限。在WordPress默认中,分五种角色(管理员、编辑、作者、投稿者、订阅者)和11种权限(level_0 ~ level_10),其中:
管理员拥有最高权限(level_0 ~ level_10)
编辑次之(level_0 ~ level_7)
再是作者(level_0 ~ level_2)
然后是投稿者(level_0 ~ level_1)
最后是订阅者(level_0)
在数据库中,关于权限的字段位于数据库中wp_usermeta表中的meta_value,所以这个判断函数可以这么写:
<?php global $wpdb; //显示管理员 $administrators = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value = 10 ORDER BY user_id"); //显示管理员、编辑 $editors = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= 7 ORDER BY user_id"); //显示管理员、编辑、作者 $authors = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= 2 ORDER BY user_id"); //显示管理员、编辑、作者、投稿者 $contributors = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= 1 ORDER BY user_id"); //显示管理员、编辑、作者、投稿者、订阅者 $subscribers = $wpdb->get_col("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value >= 0 ORDER BY user_id"); //历遍显示输出所有相关用户的显示名称 foreach($administrators as $administrator){ echo get_the_author_meta('display_name', $administrator).'<br />'; }
以上示例中只输出权限最高的管理员用户,大家都自己发挥吧!注释都写明了相关的权限和角色。
WordPress数据库整合导致后台登录无权限解决方法
最近在折腾wordpress,发现很多问题,就把关于WordPress数据库会员数据整合出现的一个问题及解决方案记录在博客了吧!
今天在做整合时的一些数据库同步时出现一个问题,就是WordPress用户登录后台提示“你没有足够的权限访问该页面”,其实这样的情况经常遇见,有些时候修改过WordPress的数据库特别是修改WordPress用户ID时,不久前子凡发表过一篇《WordPress修改用户ID的方法》,其实稍有不注意也会引起这样的情况出现。
出现这样的情况其实很简单,只要你理解到WordPress的一些数据表的分别作用是什么你就了解了,WordPress用于存放用户信息的主要有两个表:wp_users,wp_usermeta(wp_为安装WordPress是用户选择的数据表前缀),user主要存放的就是用户的基本信息,usermeta就是存放的用户的一些权限配置。其次还有就是wp_posts,wp_comments 这两张表,也关联这用户数据,比如文章作者,评论信息等。所以如果你只是修改WordPress的用户ID,请大家参考《WordPress修改用户ID的方法》一文。
下面还是说说子凡这次的主题,登陆后提示:
You do not have sufficient permissions to access this page.(你没有足够的权限访问该页面)
wp_usermeta表中存储了用户权限,这个权限的值是以wp前缀开头的,以站点的首个管理员为例,该管理员用户id为1,角色是administrator,则表中就有类似这样的记录(如下图:倒数第二条记录)
user_id->1, meta_key->wp_capabilities, meta_value->a:1:{s:13:"administrator";s:1:"1";}
还有就是截图的最后一条数据记录,这一条也是必不可少的,这就是WordPress对用户的等级权限设置。
截图中是管理员数据,但是在子凡做用户数据的时候,一个普通的用户是不可能使用管理员权限的,一般为订阅用户即可,同理我们也只需要根据上面方法,给大家写两条例子吧!
user_id->1, meta_key->wp_capabilities, meta_value->a:1:{s:10:"subscriber";s:1:"1";}
user_id->1, meta_key->wp_user_level, meta_value->0
//在数据库运行以下SQL即可简单的插入一个用户,大家使用记得看清参数 INSERT INTO wp_users SET ID='用户ID', user_login='用户名', user_email='用户邮箱', user_pass='用户密码' INSERT INTO wp_usermeta SET user_id='用户ID', meta_key='wp_capabilities', meta_value='a:1:{s:10:"subscriber";s:1:"1";}' INSERT INTO wp_usermeta SET user_id='用户ID', meta_key='wp_user_level', meta_value='0'
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, 权限
, 函数
, wordpress
用户
wordpress 数据库权限、wordpress 数据库、wordpress数据库结构、wordpress 数据库操作、wordpress数据库优化,以便于您获取更多的相关知识。