给投稿作者开了 contributor 角色,登录后能进设置页改站点标题,插件列表也能点安装,权限明显超出了投稿范围。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,角色被插件或主题额外加了管理设置的能力项,contributor 原本只该管自己名下的文章,多出来的能力项一直没人清理,等于把后台交出去了。

「WordPress contributor 权限」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。改完顺手把文档补一句,省得下次自己重新推一遍。

$role = get_role('contributor');
$role->remove_cap('manage_options');
$role->remove_cap('install_plugins');
// 只保留 edit_posts 与 read

监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

具体做法是,用权限管理插件把该角色现有的能力项全部列出来;删掉管理设置与安装插件这两项越权的能力项;按最小权限重建该角色,再换一个账号实测后台。

最后用这个标准收尾,contributor 登录后侧边栏没有设置与插件菜单,投稿和上传功能仍然正常。

作者 9823189