wp_nav_menu([
'theme_location' => 'primary',
'depth' => 0,
'container' => false,
]);
后台把产品菜单拖到第四级,保存成功,前台只显示到第三级,第四级整个消失。换成默认主题也一样,检查元素里根本没有那层 ul。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,主题的 nav walker 里写死了 depth 3,wp_nav_menu 的 depth 参数也被固定成 3,多出来的层级在输出阶段被丢掉。后台数据结构没问题,问题在渲染。
围绕「菜单四级截断」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
处理上按这个顺序:先在后台确认第四级菜单项的 parent 确实指向第三级 ID;把 wp_nav_menu 的 depth 参数去掉 让它不限层;检查自定义 Walker 里 start_lvl 的层级判断 去掉硬编码的 3。
改完只确认一件事:前台第四级菜单出现在 DOM 里,移动端折叠后也能逐层展开。
