同一账号在子站是管理员,切到主站后台只剩仪表盘,发布按钮消失,用户列表里显示“订阅者”。日志里能对上时间点,这种反而好排。

多站点的角色存在各自的 wp_2_capabilities 里,主站没有给这个用户授予角色。用户在主站被当成只有 subscriber,权限自然不够。这一点先确认清楚,后面就不用反复试。

add_user_to_blog(1, $user_id, 'editor');
var_dump(is_user_member_of_blog($user_id, 1));

「多站点用户角色混乱」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

处理上按这个顺序:用 is_user_member_of_blog 确认归属;用 add_user_to_blog 在主站授予对应角色;清理重复的 capabilities 记录。

结果对不对很好判断,同一账号在主站和子站都能进入对应后台,发布权限正常。

作者 9823189