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-----遇到的问题----tab键不补全sh文件不能运行

    在linux上部署tomcat,进入bin目录后 遇到了tab键不补全sh文件不能运行的情况. 如果自己输入sh文件名后也会报错: [x@web bin]$ ./startup.shbash: ./s ...

  2. jqury中关于ajax的几个常用的函数

    一: AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术 ...

  3. advanced bash shell guide读书笔记

    http://note.youdao.com/noteshare?id=fc23a679849b4627d131d3ef07c74a71

  4. APP的数据采集与埋点方式分析

    前言: 神策数据写过几篇分析APP前后端埋点的文章,原文在此: https://sensorsdata.cn/blog/shu-ju-jie-ru-yu-mai-dian/ http://www.wo ...

  5. 从一个集合中过滤另一个集合中存在的项(类似in)

    直接贴代码出来: List<PriceMark> list = PriceMarkDAL.m_PriceMarkDAL.GetList("Erp_ProName='TLC7528 ...

  6. OpenCV---开闭操作

    一:开操作(先腐蚀后膨胀) 特点:消除噪点,去除小的干扰块,而不影响原来的图像 import cv2 as cv import numpy as np def camp(val1,val2): pv ...

  7. HBase基本操作-Java实现

    创建Table public static void createTable(String tableName){ try { HBaseAdmin hbaseAdmin = new HBaseAdm ...

  8. NOIP模拟赛12

    期望得分:100+100+50=250 实际得分:100+100+30=230 A 约数之和(count.pas/c/cpp) TL:1S ML:128MB[Description]我们用 D(x)表 ...

  9. 桥接模式_NAT模式_仅主机模式_模型图.ziw

      2017年1月12日, 星期四 桥接模式_NAT模式_仅主机模式_模型图   null

  10. [译]Quartz 框架 教程(中文版)2.2.x 之第二课 Quartz API,Jobs和Triggers简介

    第二课:QuartzAPI,Jobs和Triggers简介 Quartz API Quartz API 关键的几个接口: Scheduler:跟任务调度相关的最主要的API接口. Job:你期望任务调 ...