WordPress Twenty-Twenty-Three主题下Polylang菜单异常问题求助
解决Polylang菜单不显示、前端只展示页面列表的问题
先查主题菜单注册是否合规
Polylang只认WordPress标准注册的菜单位置,直接去主题的functions.php里找有没有这段代码:
register_nav_menus( array( 'primary' => __( 'Primary Menu', 'your-theme-text-domain' ), // 其他菜单位置 ) );
要是没有,或者注册的菜单标识和你在主题编辑器选的对不上,Polylang根本识别不了。补全或者改对之后,去外观→菜单重新给各语言分配菜单。
核对Polylang的菜单同步设置
- 进语言→设置,切到菜单标签页
- 确保勾了同步菜单,而且每种语言都指定了对应的菜单
- 检查语言切换器的设置,确认你在菜单里加的语言切换器位置是对的
修复主题的菜单调用代码
要是主题前端调用菜单的方式不标准,Polylang没法替换成多语言菜单:
- 主题必须用
wp_nav_menu()调用菜单,不能直接用wp_list_pages()这种拉页面列表的函数 - 把错误的调用改成标准写法,比如:
wp_nav_menu( array( 'theme_location' => 'primary', // 对应你注册的菜单位置标识 'menu_id' => 'primary-menu', ) ); - 要是主题用了自定义菜单逻辑,得确保它兼容Polylang的多语言菜单过滤机制
重置菜单缓存和Polylang设置
- 去外观→菜单,先删掉当前关联的菜单,保存后重新创建并关联到对应语言和菜单位置
- 进工具→站点健康,点清除缓存;有缓存插件的话也清空插件缓存
- 暂时禁用其他插件,排查是不是有插件冲突导致Polylang没法正常识别菜单
解决404页面乱入的问题
前端列表里出现404页面,基本是菜单调用的fallback逻辑错了:
- 检查
wp_nav_menu()的fallback_cb参数是不是设成了wp_list_pages,有的话改成自定义回调或者直接设为false,别让它 fallback 到页面列表 - 示例修正:
wp_nav_menu( array( 'theme_location' => 'primary', 'fallback_cb' => false, // 禁用页面列表作为 fallback ) );
内容的提问来源于stack exchange,提问作者Егор
相关产品推荐
相关产品推荐

