【wordpress判断用户角色和权限等级及整合数据库】WordPress判断用户角色和权限等级及整合数据库导致后台登录无权限

更新时间:2019-12-25    来源:WordPress    手机版     字体:

【www.bbyears.com--WordPress】

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,所以这个判断函数可以这么写:


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).'';
}



以上示例中只输出权限最高的管理员用户,大家都自己发挥吧!注释都写明了相关的权限和角色。




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";}

http://cdn.zhangzifan.com/@/file/uploade/2015/08/WordPress-user-add-by-sql.png

还有就是截图的最后一条数据记录,这一条也是必不可少的,这就是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'


本文来源:http://www.bbyears.com/wangyezhizuo/83630.html