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字段的值拷贝过来就可以了。