一、先搞懂原生五级用户权限是什么
(一)权限分级清单
WordPress默认自带5级固定权限层级,权限从低到高、操作范围从窄到宽依次是:
- 订阅者:只能登录后台修改自己的个人资料(头像、密码、昵称)、查看已发布的公开内容
- 投稿者:可以撰写、编辑、删除自己的草稿,但不能发布文章/页面,不能上传媒体文件
- 作者:可以撰写、编辑、删除自己的文章/页面,能发布自己的内容,能上传媒体文件,但不能编辑/删除他人内容
- 编辑:可以撰写、编辑、删除所有用户的文章/页面、分类、标签,能上传/删除媒体文件,能审核发布投稿者、作者的内容,但不能修改网站设置、用户权限、主题/插件
- 管理员:拥有网站100%控制权,能操作所有后台功能
(二)查看/修改现有用户权限的原生操作
这步适合临时调整小范围权限,不需要插件:
1. 登录WordPress后台,点击左侧菜单栏的「用户」→「所有用户」
2. 找到要修改的用户,鼠标悬停在用户名上,点击弹出的「编辑」按钮
3. 下拉到页面底部的「角色」选项卡,选择对应的权限层级
4. 点击页面右下角的「更新用户」按钮,权限立即生效
二、通过原生代码自定义精准权限
如果原生五级权限不够用(比如需要给运营岗“可以修改网站公告但不能改主题”的权限),可以用原生代码片段调整,不需要懂复杂编程,直接复制粘贴即可:
(一)操作前必做备份
避免代码出错导致后台无法访问,先做2件事:
1. 登录主机控制面板(比如宝塔面板、cPanel),进入网站根目录,找到`wp-config.php`文件,复制一份到本地
2. 在WordPress后台安装并激活「WP Rollback」插件(用于快速回滚主题/插件,这里主要防误操作)
(二)添加/修改用户自定义角色的代码
1. 找到代码放置位置
选择以下两种最稳妥的方式之一:
- 方式一:主题/子主题的`functions.php`文件(推荐子主题,避免主题更新后代码丢失)
- 登录主机控制面板→根目录→`wp-content/themes/你的子主题名称/`→找到`functions.php`→点击编辑
- 方式二:安装并激活「Code Snippets」插件(不用改文件,适合小白)
- 后台左侧「插件」→「安装插件」→搜索“Code Snippets”→点击安装→点击激活
- 激活后点击左侧「Snippets」→「Add New」
2. 复制粘贴可直接用的代码
以创建“运营专员”角色为例,设置权限为:可以编辑所有文章/页面、修改分类/标签、上传媒体、审核发布,但不能修改主题/插件/用户/网站设置:
```php
// 创建运营专员自定义角色
function add_custom_role() {
// 基于编辑角色的权限,移除不需要的
$editor_role = get_role( 'editor' );
$capabilities = $editor_role->capabilities;
// 移除编辑角色的部分高权限
unset( $capabilities['edit_theme_options'] ); // 不能修改主题设置
unset( $capabilities['install_plugins'] ); // 不能安装插件
unset( $capabilities['update_plugins'] ); // 不能更新插件
unset( $capabilities['delete_plugins'] ); // 不能删除插件
unset( $capabilities['activate_plugins'] ); // 不能激活/停用插件
unset( $capabilities['edit_plugins'] ); // 不能编辑插件
unset( $capabilities['list_users'] ); // 不能查看用户列表
unset( $capabilities['create_users'] ); // 不能创建用户
unset( $capabilities['edit_users'] ); // 不能编辑用户
unset( $capabilities['delete_users'] ); // 不能删除用户
unset( $capabilities['promote_users'] ); // 不能修改用户权限
unset( $capabilities['manage_options'] ); // 不能修改网站核心设置
// 添加新角色
add_role(
'operation_specialist', // 角色内部标识(必须小写、无空格)
'运营专员', // 后台显示的角色名称
$capabilities // 权限数组
);
}
add_action( 'init', 'add_custom_role' );
```
3. 代码生效与回滚
- 用子主题`functions.php`:粘贴代码后点击「保存」,刷新后台即可看到新增的“运营专员”角色
- 用Code Snippets:粘贴代码后勾选「Only run in administration area」(仅在后台运行,安全),点击「Save Changes and Activate」,刷新后台即可
如果出错导致后台无法访问:
- 用子主题`functions.php`:登录主机控制面板→找到之前备份的`functions.php`,覆盖原文件
- 用Code Snippets:登录主机控制面板→根目录→`wp-content/plugins/`→找到`code-snippets`文件夹→重命名为`code-snippets-old`,后台就会自动停用插件,恢复访问
4. 删除不需要的自定义角色
如果不再需要自定义角色,添加以下代码(运行一次后删除,避免重复操作):
```php
// 删除运营专员自定义角色(运行一次后请删除此代码)
function remove_custom_role() {
remove_role( 'operation_specialist' );
}
add_action( 'init', 'remove_custom_role' );
```
三、用插件快速自定义复杂权限
如果不想碰代码,可以用「User Role Editor」插件(完全免费,功能齐全):
(一)插件安装与激活
1. 后台左侧「插件」→「安装插件」→搜索“User Role Editor”→找到作者为Vladimir Garagulya的插件→点击安装→点击激活
2. 激活后点击左侧「Users」→「User Role Editor」(插件默认英文,如需中文,在插件安装页搜索“User Role Editor Chinese Language Pack”安装激活即可)
(二)修改现有角色权限
1. 进入User Role Editor页面,顶部「Select role and change its capabilities」下拉框选择要修改的角色
2. 权限分为多个分组(比如Posts、Pages、Media、Users等),勾选/取消勾选对应的权限项(绿色字体的是当前角色已有的权限)
3. 点击页面右侧的「Update」按钮,权限立即生效
(三)创建新角色
1. 进入User Role Editor页面,点击顶部「Add Role」按钮
2. 在弹出的窗口中填写:
- Role ID(required):内部标识,小写无空格,比如`customer_service`
- Role Name(required):后台显示的名称,比如“客服专员”
- Make copy of:基于哪个现有角色修改,比如选择“Subscriber”,权限从低到高调整
3. 点击「Add Role」按钮
4. 按照“修改现有角色权限”的步骤调整权限,最后点击「Update」
(四)给单个用户单独分配权限
如果某个用户需要和同角色其他人不同的权限(比如某个运营专员可以临时更新插件):
1. 后台左侧「用户」→「所有用户」→找到目标用户→点击「编辑」
2. 下拉到页面中间的「Additional Capabilities」选项卡(插件新增的),勾选需要的临时权限
3. 点击「更新用户」按钮
四、权限分配的3个安全实操原则
1. 最小权限原则:只给用户完成工作必须的最低权限,比如客服只给“订阅者+查看/回复评论”的权限
2. 管理员账号唯一原则:除了1-2个核心负责人,不要给任何人管理员权限
3. 定期清理原则:定期查看「所有用户」列表,删除离职/闲置的账号,避免权限泄露