当前位置: 首页 » 中职教育 » 中职计算机 » 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)以及其含义此不赘述。

广泛,可以限定用户权限,这是明摆的事情,例如:用在插件或者主题的设置后台,以限制可看到菜单项并进行某些操作的用户组;

限制可以发表/修改/删除自己的文章(如果有权限发表的话)/别人的文章等等。

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

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中,只要角色之间的能力互不冲突(一般情况下不会发生这种事情),同一个用户可以同时有多种角色。

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

$user->add_role( $role_name );

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

$user->set_role( $role_name );

移除用户的某个角色:

$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、添加用户角色

1
2
3
4
5
6
/*
$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 );

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

1
2
3
4
// 获取 “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)

投稿者权限已经具有编写文章、查看评论、修改编辑个人资料、使用快速发布工具的权限,但投稿者没有媒体(图片、视频、文件等)上传的权限,发布的文章也需要拥有更高权限的编辑或管理员审批后并发布,防止干坏事儿。