WordPress用户角色(user roles)是WP或者其它插件增加的,可以让网站管理员(网站管理员也是一种角色)来方便的管理用户的权限/能力(Capabilities,一般情况下,一种角色不止有一种能力,所以用复数),使用免费的插件,可以方便的管理每种角色的能力,简单的理解是:角色具有某些能力,是某些能力的代称。

WordPress用户角色与用户能力/权限(Roles and Capabilities)系统是自Wordpress2.0起被逐步完善的。

基本的用户角色与用户能力/权限

WORDPRESS自身的用户角色

仅指Wordpress安装时就有的几种用户角色(所列为角色名称):

  • Subscriber:订阅者
  • Contributor :投稿者
  • Author :作者
  • Editor :编辑
  • Administrator :管理员

此外,如果启用了Wordpress多站,将会多出一种用户角色:Super Admin(超级管理员)。

WORDPRESS自身的用户能力/权限

WordPress在安装完毕之后,会为各个用户角色分配默认的用户能力/权限,各个用户能力/权限的名称(ID)以及其含义此不赘述。

WORDPRESS自身的用户能力/权限的用途

广泛,可以限定用户权限,这是明摆的事情,例如:用在插件或者主题的设置后台,以限制可看到菜单项并进行某些操作的用户组;限制可以发表/修改/删除自己的文章(如果有权限发表的话)/别人的文章等等。

有时候在输出某些内容或者存储某些内容之前,有必要检查下当前已登录用户的权限,这时候就需要进行权限检查了:

1
2
3
if ( current_user_can( $capability ) ) {
//为有权限的用户做些什么
}

还可以在循环中检查当前用户是否有对某个对象的操作能力:

1
current_user_can( 'edit_post', $post_id );

还可以对文章(广义上的文章,泛指各种文章类型的文章)的作者的权限进行检查:

1
2
3
if ( author_can( $post, $capability ) ) {
// 如果作者有相应权限,怎么着
}

比如,有某种权限了,就直接发表,否则就置为草稿或者待审状态等。

以用户为对象的角色、能力/权限操作

在Wordpress中,只要角色之间的能力互不冲突(一般情况下不会发生这种事情),同一个用户可以同时有多种角色。

在获取用户对象之后,可以 为某个用户添加一种角色:

1
$user->add_role( $role_name );

如果想限定某用户只有一种角色,可以用:

1
$user->set_role( $role_name );

移除用户的某个角色:

1
$user->remove_role( $role_name );

用户的能力/权限操作

1
2
3
4
5
6
7
8
9
10
// 检查给定用户是否有某种能力/权限或者角色
if ( $user->has_cap( $cap_name ) ) {
// 做点儿啥
}
// 为给定用户添加一种能力/权限
$user->add_cap( $cap_name );
// 为给定用户移除一种能力/权限
$user->remove_cap( $cap_name );
// 为给定用户移除全部能力
$user->remove_all_caps();

以网站为对象的角色、能力/权限操作

注意:进行这些操作的时候,最后声明下全局变量global $wp_roles;,然后以$wp_roles->add_role();
、 $wp_roles->remove_role();的方式进行操作,特别是在插件中使用时。

添加用户角色

1
2
3
4
5
6
/*
$role_name:相当于角色的ID;
$display_name:角色的显示名称,支持本地化字符;
$capabilities:该角色应具有的能力组成的数组(能力ID/名称为ID,值为值组成的数组)
*/
add_role( $role_name, $display_name, $capabilities );

示例:

1
add_role( 'pama', '银牌会员', array('read'=>true,'level_0'=>true) );

删除用户角色

1
remove_role( $role_name );

示例:

1
remove_role( 'pama' );

获取用户角色对象

1
get_role( $role );

添加自定义的用户能力/权限

1
2
3
4
// 获取 "pama" 角色对象
$role = get_role( 'author' );
// 为该角色对象添加 "sleep" 能力
$role->add_cap( 'sleep' );

参考页面:http://codex.wordpress.org/Roles_and_Capabilities

WordPress用户角色与用户能力/权限的更多相关文章

  1. jeesite快速开发平台(五)----用户-角色-部门-区域-菜单-权限表关系

    转自: https://blog.csdn.net/u011781521/article/details/78994904

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

    这几天粗浅的把shiro整合到spring中,并且注解控制shiro用户/角色/权限And/OR 步骤: 1.首先maven搭建web项目 2.创建数据库 user/role/authority 其中 ...

  3. WordPress用户角色及其权限管理编辑插件:User Role Editor汉化版

    如果Wordpress默认的用户角色及权限不能满足您的需求,又觉得修改代码编辑用户权限太麻烦.那不妨试试User Role Editor,Wordpress用户角色及其权限管理编辑插件. User R ...

  4. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

    这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...

  5. Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  6. MVC开发模式下的用户角色权限控制

    前提: MVC开发模式 大概思想: 1.在MVC开发模式下,每个功能都对应着不同的控制器或操作方法名(如修改密码功能可能对应着User/changepd),把每个功能对应的控制器名和操作方法名存到数据 ...

  7. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10

    今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...

  8. [转]扩展RBAC用户角色权限设计方案

    原文地址:http://www.iteye.com/topic/930648 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地 ...

  9. 扩展RBAC用户角色权限设计方案

    RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...

随机推荐

  1. Linux基础-配置网络、集群内主机名设定、ssh登入、bash命令、通配符(元字符)

    作业一:临时配置网络(ip,网关,dns)+永久配置 设置临时网络配置: 配置IP ifcongfig ens33 192.168.16.177/24 (ifconfig 网卡 ip地址    /24 ...

  2. C++之面向对象编程20170912

    /*************************************************************************************************** ...

  3. 《剑指offer》— JavaScript(11)二进制中1的个数

    二进制中1的个数 题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 思路一 用1和n进行位运算,结果为1则n的二进制最右边一位为1,否则为0: 将n二进制形式右移1位,继续与 ...

  4. restful风格请求及都是 / 的请求及参数也在请求的/中

    前台请求的样式: http://localhost:8080/item/88909 其中参数就是最后的 商品id号  88909 后台Controller中取出参数的方法: @Controller p ...

  5. 关于OpenCV的stitching使用

    配置环境:VS2010+OpenCV2.4.9 为了使用OpenCV实现图像拼接头痛了好长时间,一直都没时间做,今天下定决心去实现基本的图像拼接. 首先,看一看使用OpenCV进行拼接的方法 基本都是 ...

  6. [io benchmark]常用磁盘基准/压力测试工具

    Unix Disk I/O Benchmarks fio - NEW! fio is an I/O tool meant to be used both for benchmark and stres ...

  7. array_intersect

    <?php date_default_timezone_set('Asia/Shanghai'); $a1=array("a"=>"red",&qu ...

  8. 类的起源与metaclass

    一.概述 我们知道类可以实例化出对象,那么类本身又是怎么产生的呢?我们就来追溯一下类的起源. 二.类的起源 2.1 创建一个类 class Foo(object): def __init__(self ...

  9. jQuery中deferred的对象使用

    什么是deferred对象 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作.其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是 ...

  10. zoj 3229 Shoot the Bullet(有源汇上下界最大流)

    Shoot the Bullethttp://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3442 Time Limit: 2 Second ...