如果对 WordPress 默认的角色列表或其中的用户权限设置觉得不满意,可以试试 User Role Editor Pro 插件。该插件可以编辑任何现有角色,创建新角色,为所选角色赋予需要的功能,还可以将新创建的角色或权限直接分配给用户。
User Role Editor Pro 主要功能
- 在每个角色基础上阻止/开放选定的管理菜单项
- 可为所有人、登录用户、具有选定角色的登录用户显示前端菜单项,而不是仅登录访问者
- 阻止所选导航菜单编辑所选角色
- 在每个角色基础上的“外观”菜单下阻止选定的小部件和侧边栏
- 阻止角色的选定元框(仪表板、帖子、页面、自定义帖子类型)
- 阻止对所选角色的其他角色的访问
- 具有“activate_plugins”功能的角色和用户的每个插件访问权限
- 导出和导入用户角色
- 多站点:从一个点在网络管理中对所有站点进行角色和用户管理:编辑,将角色复制到所有子站点,为用户分配角色和功能,将现有用户及其权限复制到网络的所有站点。
- 多站点:限制单个站点管理员对选定用户功能的访问以及用户角色编辑器中的添加/删除角色操作
- 多站点:超级管理员可以设置单独的主题列表,供选定的单个站点管理员激活。
- 内容编辑访问限制功能:
- 强制所有自定义帖子类型使用其自己的自定义功能集,而不是使用基于“帖子”构建的功能集,例如“edit_videos”而不是“edit_posts”。
- 激活帖子/页面/自定义帖子类型的“创建”功能。例如,如果没有“create_post”功能,用户将只能编辑现有帖子。
- 仅通过帖子/页面 ID,或/和类别/分类 ID,或/和作者用户 ID
- 编辑所选帖子和页面的用户访问限制;
- 通过表单 ID 列表限制用户访问 Gravity Forms
- 选定角色的内容视图访问限制和短代码
- 管理为什么角色显示什么小部件
- 管理页面权限查看器在每个管理后端 (wp-admin) 页面的底部显示由该页面检查的用户功能列表以及与之挂钩的插件。
User Role Editor Pro 汉化版演示


更新日志
v4.66 - 2026年8月25日
- 核心版本更新至 4.66.1
- 更新:标记兼容 WordPress 7.1
- 更新:PHP 最低版本要求提升至 7.4
- 更新:优化插件加载代码
- 更新:插件不再使用自定义 PHP 全局常量,所需数据已迁移至类内部
- 更新:"Admin menu access" 附加组件:更新了 WooCommerce 商品和商店订单列表页面默认允许的 URL 参数白名单
- 修复:URE_Assign_Role_Pro::get_users_queued() 引用了未定义的常量,已替换为 self::CRON_ACTION_HOOK
- 修复:URE_Assign_Role_Pro::assign_role_to_user() 对 $user->caps 使用了宽松的 in_array() 检查,导致始终为 true,后台角色分配功能实际上从未生效;现已改为正确检查 $user->roles
- 修复:"Posts Edit Access" 批量操作的用户 ID 列表中可能包含多余的空白字符而非整数;现已正确转换为 int 类型
- 更新:URE_Uninstall_Pro::init_options_list() 现在引用附加组件类自身的 *_KEY 常量,而非重复使用选项名称字符串
- 修复:在免费版插件已激活的情况下激活 Pro 版,某些加载顺序下仍会导致两个版本同时处于激活状态,因为 URE_Core_Pro::init()(其中注册了上述修复)在免费版已定义 URE_Loader/URE_Core 时会被跳过;激活钩子的注册现已通过主插件文件中的独立函数无条件执行
- 更新:URE_Admin_Notice 类的输出已使用 esc_attr() 和 wp_kses_post() 函数进行转义处理
- 安全修复:URE_Editor::direct_network_roles_update() 和 leave_roles_for_blog() 中的 SQL 查询现已通过 $wpdb->prepare() 使用 %s 占位符进行参数化处理
- 安全修复:URE_Editor::get_caps_columns_quant() 在从 $_POST 写入显示偏好临时数据前,现在要求有效的 nonce,修复了一个轻微的 CSRF 漏洞
- 修复:URE_Protect_Admin 在检查权限数组时使用了位运算符 "&" 而非逻辑运算符 "&&",可能在 PHP 8 中抛出 TypeError;已修复为使用 "&&",相关的 IN() SQL 子句也通过 array_map('absint', ...) 进行了加固
- 更新:设置/工具页面中使用的 nonce action 现已按表单分别设置(ure_settings_update、ure_addons_settings_update、ure_default_roles_update、ure_settings_ms_update、ure_settings_tools_exec),不再共用一个字符串
- 更新:在 URE_View、URE_Role_View 和 URE_Role_Additional_Options 中增加了额外的输出转义(角色/权限标识、使用 wp_json_encode() 替代 json_encode()、对表单 action 使用 esc_url()),并在 URE_Role_Additional_Options::save() 中增加了纵深防御的权限检查
- 更新:为使用 target="_new" 打开的外部链接添加了 rel="noopener noreferrer"
- 更新:角色编辑器工具栏中的硬编码文本字符串现已支持翻译
- 修复:URE_Assign_Role 使用了 %i SQL 占位符,该占位符需要 WordPress 6.2+,低于插件声明的最低版本要求;已替换为直接拼接内部表名
- 修复:URE_Editor::reset_user_roles() 中 wp_die() 的消息未转义;在 URE_Base_Lib、URE_Editor、URE_User_Other_Roles 和 URE_User_View 中进一步增加了输出转义(esc_url()、esc_html()、absint())
- 修复:多处请求变量/数据库结果的比较可能被 PHP 类型松散比较绕过,现已改为严格比较,包括 URE_Grant_Roles::is_try_remove_admin_from_himself() 中"不能移除自身管理员角色"的检查
- 修复:URE_Base_Lib::set() 现在正确拒绝未知属性,而非静默创建;URE_View 已显式声明其 $advert 属性
- 更新:$_SERVER['REQUEST_URI'] 在 URE_Lib::is_right_admin_path() 和 URE_User_Other_Roles::is_user_profile_extention_allowed() 中清理前已进行验证和去除反斜杠处理
- 更新:在 URE_Editor 中对提交的角色 ID 进行了清理(sanitize_key()、wp_unslash()),其 'object'/角色选择请求参数已限制为已知值
- 更新:URE_Base_Lib::get_blog_ids() 现在使用 get_sites() 替代原始数据库查询
- 更新:URE_Capability::revoke_caps() 现在使用 get_users() 替代原始数据库查询
- 更新:URE_Protect_Admin::has_administrator_role() 现在使用 user_can() 替代原始数据库查询
- 修复:URE_Assign_Role::$lib 属性已改为 protected
- 修复:URE_Uninstall::delete_options() 私有函数已改为 protected
- 修复:URE_Uninstall::init_options_list() 引用了 'ure_task_queue',与 URE_Task_Queue::OPTION_NAME('ure_tasks_queue')不匹配,导致卸载时该选项从未被删除
- 修复:URE_Core::define_files() 中 URE_Uninstall 类未被正确添加,写入了 null 而非类名
- 修复:在 Pro 版已激活的情况下激活免费版,会触发 "Cannot redeclare ure_log_error()" 致命错误;函数声明现已通过 function_exists() 进行保护
- 修复:在配对的 Pro 版已激活的情况下激活本插件,会静默导致两个版本同时激活而非停用配对版本,因为 register_activation_hook() 调用在该请求中未执行;现已将其注册为主插件文件中的独立函数,位于 class_exists('URE_Loader') 保护之前资源下载
安装 & 使用提示
- 帮助文档:https://www.role-editor.com/documentation/
- 不支持在线升级版本,可上传新版安装包升级安装。







