给编辑加了一个运营菜单,管理员账号能看到,编辑账号登录后侧边栏里没有这一项,直接访问也报无权。乍看像缓存或者权限的锅,追下去往往不是。

add_menu_page('运营面板', '运营', 'edit_others_posts',
  'ops-panel', 'ops_render', 'dashicons-chart-bar', 3);

追下去是这么回事:注册菜单时能力项写成了管理员专属,编辑天生没有这个权限,整条菜单在生成时就被过滤掉了,不熟悉角色表很难看出。

「WordPress 后台菜单权限」这类改动最怕改一半,回滚脚本先准备好,再动生产。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。

具体做法是,把菜单的能力项换成编辑账号已经拥有的权限;子菜单保持同一个能力项,不要另设成管理员项;换一个编辑账号登录,逐个点开菜单页面实测一次。

验收就看一点,editor 登录后侧边栏出现该菜单,点开页面不报无权限,保存也正常。

作者 9823189