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

<?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数据库优化,以便于您获取更多的相关知识。

时间: 2024-11-08 19:44:35

WordPress判断用户角色和权限等级及整合数据库导致后台登录无权限的相关文章

WordPress判断用户是否登录的代码

is_user_logged_in() 说明 根据当前访问者是否登录返回布尔值true或false. 参数 该函数不接受任何参数. 用法 复制代码 代码如下: <?php if ( is_user_logged_in() ) { ... } ?> 示例 根据当前访问者的登录情况,使用is_user_logged_in()函数在主题文件中展示不同输出结果. 复制代码 代码如下: <?php if ( is_user_logged_in() ) { echo 'Welcome, regist

WordPress判断用户是否登录的代码_php技巧

is_user_logged_in() 说明 根据当前访问者是否登录返回布尔值true或false. 参数 该函数不接受任何参数. 用法 复制代码 代码如下: <?php if ( is_user_logged_in() ) { ... } ?> 示例 根据当前访问者的登录情况,使用is_user_logged_in()函数在主题文件中展示不同输出结果. 复制代码 代码如下: <?php if ( is_user_logged_in() ) { echo 'Welcome, regist

WordPress中判断用户是不是管理员的教程

今天在写个小程序,需要判断指定用户的角色是不是网站管理员,如知道用户的id是123,想要知道他是不是管理员. 一.判断指定id的用户是不是管理员 该需求实现起来非常简单,几行代码搞定,分享一下: function ludou_is_administrator($user_id) {   $user = get_userdata($user_id);   if(!empty($user->roles) && in_array('administrator', $user->rol

关于用户角色权限的一点想法(1)

标题    关于用户角色权限的一点想法(1)    biggie(原作) 关键字    关于用户角色权限的一点想法 前言: 权限往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断"Who对What(Which)进行How的操作"的逻辑表达式是否为真.针对不同的应用,需要根据项目的实际情况和具体架构,在维护性.灵活性.完整性等N多个方案之间比较权衡,选择符合的方案. 目标: 直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重要,系统不辞劳苦的实现了组

关于用户角色权限的一点想法

前言: 权限往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断"Who对What(Which)进行How的操作"的逻辑表达式是否为真.针对不同的应用,需要根据项目的实际情况和具体架构,在维护性.灵活性.完整性等N多个方案之间比较权衡,选择符合的方案. 目标: 直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重要,系统不辞劳苦的实现了组的继承,除了功能的必须,更主要的就是因为它足够直观. 简单,包括概念数量上的简单和意义上的简单还有功能上的简单.想用

WordPress中创建用户角色的相关PHP函数使用详解_php技巧

WordPress 默认有 "订阅者"."投稿者"."作者"."编辑" 和 "管理员" 五个用户角色,权限由低到高,但默认的五个角色可能不够我们用,这时可以使用 add_role() 函数创建一个角色. 用法 add_role( $role, $display_name, $capabilities ); 参数 $role (字符串)(必须)用户角色 ID 默认值:None $display_name (字

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装       (5):前台Jquery easyUI实现   (6):EF上下文实例管理    (7):DBSession的封装   (8):DBSession线程内唯一       (9):

【shiro】spring整合shiro,注解控制shiro用户/角色/权限And/OR,没有权限跳转到固定页面

这几天粗浅的把shiro整合到spring中,并且注解控制shiro用户/角色/权限And/OR 步骤: 1.首先maven搭建web项目 2.创建数据库 user/role/authority 其中,role->user是一对多,role->authority是多对多 shiros.sql内容: 1 /* 2 SQLyog Ultimate v11.24 (32 bit) 3 MySQL - 5.5.41 : Database - shiros 4 *********************

如何在SharePointDesigner订制页中判断用户权限

有时候需要在通过SharePointDesigner进行的订制开发里判断用户的权限点,并根据不同的权限点来判断用户的身份提供不同的服务,有一个默认提供的识别权限的控件SPSecurityTrimmedControl,在通过SharePointDesigner进行站点订制的时候如果希望根据不同的权限有不同的Behavior,这个控件尤其有用. 在下例中就根据不同的权限来设置脚本变量的不同值,请注意权限字符串是与的关系,也就是权限会进行叠加. <script> var msg = 0; var c