注册了新的文章类型,管理员能编辑,编辑账号在后台连菜单都看不到,直接访问地址提示无权限。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,注册时能力类型沿用了默认文章,又没有打开权限映射,角色拿不到对应的能力项,菜单在生成时就被整条过滤,地址也进不去。
「WordPress 自定义文章类型权限」这类改动最怕改一半,回滚脚本先准备好,再动生产。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
register_post_type('course', [
'capability_type' => 'course',
'map_meta_cap' => true,
'capabilities' => ['edit_posts' => 'edit_courses'],
]);
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
具体做法是,把能力类型改成这个文章类型自己专属的名字;打开权限映射选项,让每一项权限都能逐一对应;给角色补上编辑这一类型所需要的那几个权限项。
最后用这个标准收尾,editor 能看到该类型菜单并编辑内容,未授权角色仍被拦住,不会越界。
