WP DEVELOP

EP087. “自定义用户角色:Members 插件与自定义文章类型权限”

首页 WordPress 开发课程 用户角色与权限 · EP087
约 7 分钟· #EP087#用户角色与权限
🔒 登录后可标记已读

WordPress 默认自带 5 种角色(Subscriber / Contributor / Author / Editor / Administrator),权限逐级递增,但没法只让某个人管理某一种自定义文章类型(比如只管 Event,不能碰 Program)。这一讲装 Members 插件(MemberPress 出品的免费角色权限插件)新建自定义角色,并配合修改 mu-plugins/university-post-types.php,把 Event、Campus 这两个自定义文章类型的权限从「默认继承 Post 的权限」改成「拥有自己独立的权限」,这样才能在 Members 插件里单独对它们授权。最后演示了给同一个用户账号叠加多个角色(Event Planner + Campus Manager)。


涉及文件

  • wp-content/mu-plugins/university-post-types.php (修改)
  • 后台安装 Members 插件,新建角色 Event PlannerCampus Manager(插件界面操作,无对应代码文件)

代码实现

mu-plugins/university-post-types.php:给 Campus 和 Event 两个文章类型的注册参数加上独立权限

// wp-content/mu-plugins/university-post-types.php

// campus 文章类型注册参数里新增:
'capability_type' => 'campus',
'map_meta_cap' => true,

// event 文章类型注册参数里新增:
'capability_type' => 'event',
'map_meta_cap' => true,

关键改动点:

  • 自定义文章类型如果不设置 capability_type,WordPress 默认会让它沿用 post(博客文章)的权限体系——意味着只要某个角色有权限管理博客文章,也会自动获得管理这个自定义文章类型的权限,这在后台角色管理界面里也不会单独出现对应的权限勾选栏
  • capability_type 设成一个独一无二的字符串(这里跟文章类型同名,方便理解,但实际上取什么名字都行,只要唯一)之后,WordPress 才会为这个文章类型生成一套独立的权限集合,Members 插件的角色编辑界面才会出现对应的权限勾选 Tab
  • map_meta_cap => true 是让 WordPress 自动按标准逻辑(创建/编辑自己的/编辑他人的/删除等)把这些新权限映射、套用到实际操作上,不用自己写判断逻辑去手动检查权限
  • Members 插件后台路径是「Members → Roles」(不是 Users 菜单下面),新建角色时给它起名(如 Event Planner),会看到新出现的 Events 权限 Tab,勾选需要的权限(创建/编辑他人/删除等)保存即可
  • 一个用户账号可以同时勾选多个角色(比如 Editor + Event Planner + Campus Manager),Members 插件支持这种多角色叠加,是原生 WordPress 后台做不到的

[截图:wp-admin 后台 Members 插件的 Roles 设置页面,新建 Event Planner 角色并勾选 Events 权限 Tab]


Hook / Function 速查

名称类型用途
capability_typeregister_post_type 参数)WP 内建注册参数让自定义文章类型拥有独立于 post 的权限体系
map_meta_capregister_post_type 参数)WP 内建注册参数让 WordPress 自动把「创建/编辑/删除」这类通用权限映射到具体操作上,不用手写权限判断逻辑

常见坑

  • 给自定义文章类型加了 capability_type 之后,忘记回头给 Administrator 角色也补上对应权限——capability_type 一旦设置,包括管理员在内的所有角色都不再自动拥有这个文章类型的权限,必须去 Members 插件里给 Administrator 角色也手动勾选一遍,不然连管理员自己都会突然看不到这个文章类型的管理菜单
  • Members 插件历史上改过名字,旧版教程/文档里提到「从 Users 菜单进入角色设置」的说法已经过时,现在固定是从左侧 Members 菜单进入

延伸 / 后续讲座会用到

下一讲会做「开放注册」,让访客可以自己注册成默认权限最低的 Subscriber 账号;再往后几讲会逐步给 Subscriber 开放笔记(My Notes)、点赞教授等有限的功能。


Sources

Udemy:

  • Become a WordPress Developer: Unlocking Power With Code — Section 18, EP087