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 配置多站点网络

WordPress 判断用户角色和权限以及管理员

WordPress管理员评论回复添加标注Admin印章

总结分享 WordPress显示评论者IP归属地、浏览器、终端设备、电信运营商

WordPress 角色和权限终极指南 (我爱水煮鱼)