WordPress用户角色权限详解

背字根

WordPress默认5个用户角色,分别为:订阅者、贡献者、作者、编辑和管理员,每个角色拥有不同的后台控制权,我们可以自由添加新的角色或为已有角色分配不同的权限。

用户角色权限

可以打印全局变量 $wp_roles 来查看所有用户的权限和等级。

subscriber(订阅者)

等级:level_0

权限:

  • read:阅读

contributor(贡献者)

等级:level_1

权限:

  • edit_posts:添加文章;
  • delete_posts:删除自己的文章。

贡献者提交的文章需要编辑或管理员审核,审核发布后的文章不再有权限编辑。

author(作者)

等级:level_2

权限:

  • upload_files:上传文件;
  • edit_published_posts:编辑自己已发布的文章;
  • publish_posts:发布自己的文章;
  • delete_published_posts:删除自己已发布的文章。

editor(编辑)

等级:level_7

权限:

  • moderate_comments:审核评论;
  • manage_categories:管理分类;
  • manage_links:管理友情链接;
  • unfiltered_html:文章、评论允许发布带有HTML标记的内容;
  • edit_pages:编辑页面;
  • edit_others_pages:编辑其他用户添加的页面;
  • edit_published_pages:编辑已发布的页面;
  • publish_pages:编辑页面的发布状态;
  • delete_pages:删除页面;
  • delete_others_pages:删除其他用户添加的页面;
  • delete_published_pages:删除已发布的页面;
  • delete_private_pages:删除私密页面;
  • edit_private_pages:编辑私密页面;
  • read_private_pages:查看私密页面。
  • edit_others_posts:编辑其他用户的文章;
  • delete_others_posts:删除其他用户的文章;
  • delete_private_posts:删除私密文章;
  • edit_private_posts:编辑私密文章;
  • read_private_posts:阅读私密文章。

administrator(管理员)

等级:level_10

权限:

  • update_themes:上传主题;
  • install_themes:安装主题;
  • switch_themes:切换主题;
  • edit_themes:编辑主题;
  • edit_theme_options:编辑主题选项;
  • delete_themes:删除主题;
  • update_plugins:上传插件;
  • delete_plugins:删除插件;
  • install_plugins:安装插件;
  • activate_plugins:激活插件;
  • edit_plugins:编辑插件;
  • list_users:查看用户列表;
  • create_users:添加用户;
  • edit_users:编辑用户;
  • promote_users:用户角色权限管理;
  • remove_users:移除用户;
  • delete_users:删除用户;
  • unfiltered_upload:未过滤的上传;
  • edit_files:编辑文件;
  • manage_options:管理设置选项;
  • edit_dashboard:仪表盘管理;
  • update_core:更新主程序;
  • import:工具中的导入功能;
  • export:导出。

高级别的用户拥有低级别用户的所有权限。

权限简要概括

  • 订阅者:可以编辑个人资料,查看文章。
  • 贡献者:添加文章和删除待审核中的文章,相当于投稿。
  • 作者:上传文件,添加、编辑和删除自己的文章(无论是否已审核),相当于专栏作者。
  • 编辑:拥有所有文章、页面和评论的管理权限。
  • 管理员:拥有所有后台权限。

添加新的用户角色及权限

在WordPress的二次开发中,常常需要添加新的用户角色权限:

add_role('manager', '经理', array(
	'read' => true,
	'level_0' => true,
));

以上示例添加了一个名称为经理的角色,仅拥有订阅者权限。

当然,我们可以给新增的角色或已存在的角色添加权限:

$wp_roles->add_cap('manager', 'edit_posts');

以上示例给“经理”添加了编辑文章的权限,注意在函数中使用时,需要先引入全局变量$wp_roles:

global $wp_roles;

在二次开发中可能需要自定义一些权限,例如我之前的实体店铺会员系统中就用到了自定义权限:

$wp_roles->add_cap('manager', 'delete_transactions');

然后在对应功能页面判断当前用户是否具有该权限:

current_user_can('delete_transactions')

还可以使用下面的方式判断是否为某个角色:

current_user_can('manager');

删除用户角色及权限

用户权限的设置保存在wp_options表的wp_user_roles字段,添加/编辑/删除用户权限其实就是修改这个字段的值。

下面是删除订阅者权限的示例代码:

remove_role('subscriber');

注意:无论何种情况下,不要删除管理员权限。一般来说,我们都不应该删除WordPress默认的角色,如果不小心删除了,可以在本地新安装一个WordPress,然后将wp_user_roles字段的值拷贝过来就可以了。

个赞
扫码关注背字根

一个热爱Web开发的大男孩