WordPress用户角色与用户能力/权限
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 |
if ( current_user_can( $capability ) ) { |
还可以在循环中检查当前用户是否有对某个对象的操作能力:
1 |
current_user_can( 'edit_post', $post_id ); |
还可以对文章(广义上的文章,泛指各种文章类型的文章)的作者的权限进行检查:
1 |
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 |
// 检查给定用户是否有某种能力/权限或者角色 |
以网站为对象的角色、能力/权限操作
注意:进行这些操作的时候,最后声明下全局变量global $wp_roles;
,然后以$wp_roles->add_role();
、 $wp_roles->remove_role();
的方式进行操作,特别是在插件中使用时。
添加用户角色
1 |
/* |
示例:
1 |
add_role( 'pama', '银牌会员', array('read'=>true,'level_0'=>true) ); |
删除用户角色
1 |
remove_role( $role_name ); |
示例:
1 |
remove_role( 'pama' ); |
获取用户角色对象
1 |
get_role( $role ); |
添加自定义的用户能力/权限
1 |
// 获取 "pama" 角色对象 |
参考页面:http://codex.wordpress.org/Roles_and_Capabilities
WordPress用户角色与用户能力/权限的更多相关文章
- jeesite快速开发平台(五)----用户-角色-部门-区域-菜单-权限表关系
转自: https://blog.csdn.net/u011781521/article/details/78994904
- 【shiro】2.spring整合shiro,注解控制shiro用户/角色/权限And/OR,没有权限跳转到固定页面
这几天粗浅的把shiro整合到spring中,并且注解控制shiro用户/角色/权限And/OR 步骤: 1.首先maven搭建web项目 2.创建数据库 user/role/authority 其中 ...
- WordPress用户角色及其权限管理编辑插件:User Role Editor汉化版
如果Wordpress默认的用户角色及权限不能满足您的需求,又觉得修改代码编辑用户权限太麻烦.那不妨试试User Role Editor,Wordpress用户角色及其权限管理编辑插件. User R ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理
这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...
- Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- MVC开发模式下的用户角色权限控制
前提: MVC开发模式 大概思想: 1.在MVC开发模式下,每个功能都对应着不同的控制器或操作方法名(如修改密码功能可能对应着User/changepd),把每个功能对应的控制器名和操作方法名存到数据 ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10
今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...
- [转]扩展RBAC用户角色权限设计方案
原文地址:http://www.iteye.com/topic/930648 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地 ...
- 扩展RBAC用户角色权限设计方案
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成“用户-角色- ...
随机推荐
- linux-----遇到的问题----tab键不补全sh文件不能运行
在linux上部署tomcat,进入bin目录后 遇到了tab键不补全sh文件不能运行的情况. 如果自己输入sh文件名后也会报错: [x@web bin]$ ./startup.shbash: ./s ...
- jqury中关于ajax的几个常用的函数
一: AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术 ...
- advanced bash shell guide读书笔记
http://note.youdao.com/noteshare?id=fc23a679849b4627d131d3ef07c74a71
- APP的数据采集与埋点方式分析
前言: 神策数据写过几篇分析APP前后端埋点的文章,原文在此: https://sensorsdata.cn/blog/shu-ju-jie-ru-yu-mai-dian/ http://www.wo ...
- 从一个集合中过滤另一个集合中存在的项(类似in)
直接贴代码出来: List<PriceMark> list = PriceMarkDAL.m_PriceMarkDAL.GetList("Erp_ProName='TLC7528 ...
- OpenCV---开闭操作
一:开操作(先腐蚀后膨胀) 特点:消除噪点,去除小的干扰块,而不影响原来的图像 import cv2 as cv import numpy as np def camp(val1,val2): pv ...
- HBase基本操作-Java实现
创建Table public static void createTable(String tableName){ try { HBaseAdmin hbaseAdmin = new HBaseAdm ...
- NOIP模拟赛12
期望得分:100+100+50=250 实际得分:100+100+30=230 A 约数之和(count.pas/c/cpp) TL:1S ML:128MB[Description]我们用 D(x)表 ...
- 桥接模式_NAT模式_仅主机模式_模型图.ziw
2017年1月12日, 星期四 桥接模式_NAT模式_仅主机模式_模型图 null
- [译]Quartz 框架 教程(中文版)2.2.x 之第二课 Quartz API,Jobs和Triggers简介
第二课:QuartzAPI,Jobs和Triggers简介 Quartz API Quartz API 关键的几个接口: Scheduler:跟任务调度相关的最主要的API接口. Job:你期望任务调 ...