站点加了英文,WPML 把主菜单复制成一份英文版。切到英文后导航还是中文项,后台菜单列表里英文那份显示已分配,前台没生效。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
wp option get theme_mods_yourtheme --format=json | grep -A8 nav_menu_locations wp cache flush
复制出来的菜单没有绑定到英文的 theme_location,语言切换时按位置找不到就回退到默认语言那份。菜单项本身也需要指定语言,否则会被过滤掉。这一点先确认清楚,后面就不用反复试。
碰到「多语言菜单副本」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
具体做法是,在语言管理里确认 primary 位置在英文下指向英文菜单;给每个菜单项指定语言 不要留 all;切换后清一次对象缓存 再看前台。
改完照着核一遍,切到英文后导航显示英文菜单项,切回中文恢复原菜单。
