wp_nav_menu添加items_wrap参数后菜单输出位置错位如何解决?
问题原因
你的问题核心是wp_nav_menu的echo参数使用错误,具体逻辑如下:
- 当你给
wp_nav_menu传入'echo' => false参数时,函数不会直接输出菜单HTML,而是将生成的菜单HTML作为字符串返回。你当前的代码仅调用了函数,没有使用echo输出返回结果,所以菜单内容不会在你写代码的div容器位置输出。 - 你观察到「不加
items_wrap时输出正常」,大概率是你测试无items_wrap参数的场景时,没有设置'echo' => false,函数直接在调用位置输出了内容,所以位置符合预期。
修复方案
你可以选择两种方案修复,第一种是保留'echo' => false配置,手动输出返回的菜单字符串:
<li> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <?php echo wp_nav_menu(array( 'theme_location' => 'header_menu_location', 'echo' => false, 'items_wrap' => '%3$s' )); ?> </div> </li>
第二种是直接修改echo参数为默认值true,让函数自动输出内容:
<li> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <?php wp_nav_menu(array( 'theme_location' => 'header_menu_location', 'echo' => true, 'items_wrap' => '%3$s' )); ?> </div> </li>
内容的提问来源于stack exchange,提问作者Odai A. Ali
相关产品推荐
相关产品推荐

