WordPress 用户角色与用户权限
WordPress用户角色(user roles)是WP或者其它插件增加的,可以让网站管理员(网站管理员也是一种角色)来方便的管理用户的权限/能力(Capabilities,一般情况下,一种角色不止有一种能力,所以用复数),使用免费的插件,可以方便的管理每种角色的能力,简单的理解是:角色具有某些能力,是某些能力的代称。
WordPress用户角色与用户能力/权限(Roles and Capabilities)系统是自Wordpress2.0起被逐步完善的。
WordPress用户角色和权限是非常少用的,对于普通的WordPress博主(个人博客、公司内部等人数少时)而言,可能这个功能不太常用,但是开放注册的WordPress而言,这个功能可能就会用到了。
首先了解一下WordPress不同用户、不同角色的各级权限。
在WordPress默认中,分5种角色(管理员、编辑、作者、投稿者、订阅者)和 11种权限(level_0 ~ level_10)
管理员拥有最高权限(level_0 ~ level_10)
编辑次之(level_0 ~ level_7)
再是作者(level_0 ~ level_2)
然后是投稿者(level_0 ~ level_1)
最后是订阅者(level_0)
例如:米扑博客的后台用户管理界面,如下图
WordPress 自身的用户角色
仅指Wordpress安装时就有的几种用户角色(所列为角色名称):
- Subscriber:订阅者
- Contributor :投稿者
- Author :作者
- Editor :编辑
- Administrator :管理员
此外,如果启用了Wordpress多站,将会多出一种用户角色:Super Admin(超级管理员)
WordPress自身的用户能力/权限
WordPress在安装完毕之后,会为各个用户角色分配默认的用户能力/权限,各个用户能力/权限的名称(ID)以及其含义此不赘述。
广泛,可以限定用户权限,这是明摆的事情,例如:用在插件或者主题的设置后台,以限制可看到菜单项并进行某些操作的用户组;
限制可以发表/修改/删除自己的文章(如果有权限发表的话)/别人的文章等等。
有时候在输出某些内容或者存储某些内容之前,有必要检查下当前已登录用户的权限,这时候就需要进行权限检查了:
if ( current_user_can( $capability ) ) { //为有权限的用户做些什么 }
还可以在循环中检查当前用户是否有对某个对象的操作能力:
current_user_can( 'edit_post', $post_id );
还可以对文章(广义上的文章,泛指各种文章类型的文章)的作者的权限进行检查:
if ( author_can( $post, $capability ) ) { // 如果作者有相应权限,怎么着 }
比如,有某种权限了,就直接发表,否则就置为草稿或者待审状态等。
以用户为对象的角色、能力/权限操作
在WordPress中,只要角色之间的能力互不冲突(一般情况下不会发生这种事情),同一个用户可以同时有多种角色。
在获取用户对象之后,可以 为某个用户添加一种角色:
$user->add_role( $role_name );
如果想限定某用户只有一种角色,可以用:
$user->set_role( $role_name );
移除用户的某个角色:
$user->remove_role( $role_name );
用户的能力/权限操作
// 检查给定用户是否有某种能力/权限或者角色 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、添加用户角色
/* $role_name:相当于角色的ID; $display_name:角色的显示名称,支持本地化字符; $capabilities:该角色应具有的能力组成的数组(能力ID/名称为ID,值为值组成的数组) */ add_role( $role_name, $display_name, $capabilities );
示例:
add_role( 'pama', '银牌会员', array('read'=>true,'level_0'=>true) );
2、删除用户角色
格式:remove_role( $role_name );
示例:remove_role( 'pama' );
3、获取用户角色对象
get_role( $role );
添加自定义的用户能力/权限
// 获取 "pama" 角色对象 $role = get_role( 'author' ); // 为该角色对象添加 "sleep" 能力 $role->add_cap( 'sleep' );
WordPress 用户角色与用户权限图文说明
WordPress 不同的用户角色对应的权限,方便在实际应用中分配用户权限。
WordPress 分5种角色(管理员、编辑、作者、投稿者、订阅者)和 11种权限(level_0 ~ level_10)
管理员拥有最高权限(level_0 ~ level_10)
编辑次之(level_0 ~ level_7)
再是作者(level_0 ~ level_2)
然后是投稿者(level_0 ~ level_1)
最后是订阅者(level_0)
本文使用本博客(米扑博客)后台为例,详细图文介绍5中角色的权限
1、订阅者(Subscriber)(level_0)
订阅者是权限最低的用户角色,仅仅可以登录后台,查看前台文章、修改个人信息,看不到文章列表、评论、工具等。
一般可以使用这个作为潜在的用户或者过滤垃圾评论使用,或者还有一些其他的用法。
2、投稿者(Contributor)(level_0 ~ level_1)
投稿者权限已经具有编写文章、查看评论、修改编辑个人资料、使用快速发布工具的权限,但投稿者没有媒体(图片、视频、文件等)上传的权限,发布的文章也需要拥有更高权限的编辑或管理员审批后并发布,防止干坏事儿。
在编辑的文章不会直接发表,而需要提请管理员审批,例如:投稿者编辑、发布文章,如下图:
点击提请审批,查看我的文章,发现还未发布,等待更高权限的编辑或管理员阿里审批
需要拥有更高权限的编辑、或管理员进行文章审批,审核通过之后才可以显示在前台,
如下图,编辑或管理员账户,登录WordPress后台,查看
编辑或管理员账户(不是投稿者自己审批 - 发布),登录WordPress后台,点击编辑、预览查看,检查没问题后,点击编辑,审核通过,点击发布,如下图
这里,需要重点说明:
订阅者、投稿者、作者三种权限,都是无法查看其他人的定时发布、草稿、待审、私密等文章正文,只能看文章标题(无正文的超链接)
但可以查看其他人已发布的文章正文,这不废话嘛!!! 不登录,都可以看到已发布文章,登录了哪有反而看不到的道理!
因此,已发布的文章,任何人(包含订阅者、投稿者、作者、编辑、管理员、超级管理员、其它社会闲杂人等读者),都可以看到地!
补充:经测试,发现 订阅者、投稿者、作者三种权限,即使有其他人的定时发布、草稿、待审、私密等未发布的文章正文的正确链接,也是无法打开的,符合预期(毕竟人家没发布,没打算给你看,你当然看不了,给你看一个没发布文章的额标题,就相当给你面子,我的预期是不让看未发布文章的标题)
小结:
投稿者,没有媒体上传权限,但可以编辑文章,提交文章审批;等待编辑或管理员的审批通过后,由管理员点击发布按钮,正式发布投稿者的文章。
3、作者(Author)(level_0 ~ level_2)
作者的权限就大的多了,可以编辑文章直接发表到前台而无需审核(注:投稿者,权限低,需编辑或管理员审批后才发布),同时具有上传图片等多媒体的功能,同时还可以在边栏选择文章发表状态,设置密码保护,或者私有文章等,如下图:
文章等发表之后,可以自己编辑之前发表过的文章,但是无法编辑修改其他人发表的文章。
1)可以编辑自己的文章
2)无法查看、编辑其他人的文章
小结:
作者的权限,可编辑、发布文章,可上传媒体,可设置密码保护,或者私有文章等自主创作,但是看不到其他人的未发布文章。
4、编辑(Editor)(level_0 ~ level_7)
编辑的权限更大,跟订阅者、投稿者、作者的权限产生了分水岭,晋升到了"管理层",具体表现:
1)对于文章方面,可以增加、修改新的文章目录、标签,可以新建页面等功能
2)对于管理方面,可以审批投稿者的文章并发布
3)更关键的功能,就是可以编辑别人发表过的文章和内容,这样就可以相当于多人协作的效果。
5、管理员(Administer)(level_0 ~ level_10)
管理员当然拥有所有的权限,比如附带选择主题、编辑主题、数据备份导入导出、设置、WP模板等全部功能。
一般来说,自己搭建的 WordPress 站点,自己就是管理员,你就是老板,具有全功能权限。
6、管理员(Super Administer)(level_0 ~ level_10)
如果启用了Wordpress多站,将会多出一种用户角色:Super Admin(超级管理员)
单个站点是子公司、孙公司的老大,你是整个站群的终极老大,幕后的大BOSS
总结
虽然 WordPress 只有这五种用户权限,但是对于一个 CMS 系统,这些用户权限和功能交叉起来,可以基本满足所有的 CMS 网站需要的用户方面的功能。
例如一个中大型的资讯类 CMS 站点,就可以开通 投稿者 权限用户注册,注册之后可以推送资讯。
然后邀请一些专门的写手给予作者权限,可以直接发表文章。
此外,雇佣几个专职编辑,审核投稿者的文章以及修改作者级别用户发表的文章等等。
除此之外,WordPress 还提供了很多接口,可以十分方便的扩充用户角色和权限来符合你网站的特殊需求,本文开头已简单介绍了。
参考推荐:
总结分享 WordPress显示评论者IP归属地、浏览器、终端设备、电信运营商
WordPress 角色和权限终极指南 (我爱水煮鱼)
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2020-03-30 05:45:16
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!