时间:2024-03-14
WordPress默认5个用户角色,分别为:订阅者、贡献者、作者、编辑和管理员,每个角色拥有不同的后台控制权,我们可以自由添加新的角色或为已有角色分配不同的权限。
可以打印全局变量 $wp_roles 来查看所有用户的权限和等级。
等级:level_0
权限:
read:阅读
等级:level_1
权限:
edit_posts:添加文章;
delete_posts:删除自己的文章。
贡献者提交的文章需要编辑或管理员审核,审核发布后的文章不再有权限编辑。
等级:level_2
权限:
upload_files:上传文件;
edit_published_posts:编辑自己已发布的文章;
publish_posts:发布自己的文章;
delete_published_posts:删除自己已发布的文章。
等级: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:阅读私密文章。
等级: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字段的值拷贝过来就可以了。
Copyright © 2019-2024 liangfang.net