WordPress 菜单位于标题之外
Posted
技术标签:
【中文标题】WordPress 菜单位于标题之外【英文标题】:WordPress menu is placed outside the header 【发布时间】:2018-04-03 19:18:09 【问题描述】:如果用户转到主页以外的页面,那么我的标题会更改布局。
除了函数wp_nav_menu
之外,一切正常。
首先,我检查用户是否在主页上。根据该结果,向用户显示两个标题之一。
代码如下:
<?php
$menu = wp_nav_menu( array( 'theme_location' => 'hoofdmenu' ) );
echo is_front_page() ? '' : '
<header>
<div class="hoofdmenu">
<div class="hamburger">
<a href="#" id="click-a"><img src="'.get_bloginfo('template_directory').'/images/hamburger.png"></a>
</div>
'.$menu.'
</div>
</header>';
?>
为了简短起见,我删除了 if
语句的 true
值。
现在我遇到的问题是菜单完全放在header
之外
这是 html 输出:
<div class="menu-hoofdmenu-container">
<ul id="menu-hoofdmenu" class="menu">
<li>Menu item 1</li>
<li>Menu item 2</li>
<li>Menu item 3</li>
</ul>
</div>
<header>
<div class="hoofdmenu">
<div class="hamburger">
<a href="#" id="click-a"><img src="http://www.url.nl/wp-content/themes/themename/images/hamburger.png"></a>
</div>
</div>
</div>
</header>
对为什么wp_nav_menu
放在header
之外有什么想法吗?
-------更新--------
echo is_front_page() ? '' : '
<header>
<div class="hoofdmenu">
<div class="hamburger">
<a href="#" id="click-a"><img src="'.get_bloginfo('template_directory').'/images/hamburger.png"></a>
</div>
'.wp_nav_menu( array( 'theme_location' => 'hoofdmenu' ) ).'
</div>
</header>
【问题讨论】:
【参考方案1】:(在答案底部添加了更新,可以跳过第一部分)
根据Docs,函数显示(echo
)菜单并且不返回它。
wp_nav_menu(数组 $args = array())
显示导航菜单。
因此,当你使用
$menu = wp_nav_menu( array( 'theme_location' => 'hoofdmenu' ) );
您实际上是打印菜单而不是将其保存在 $menu
变量中,因此它在标题代码之前打印。
解决办法是:
echo is_front_page() ? '' : '
<header>
<div class="hoofdmenu">
<div class="hamburger">
<a href="#" id="click-a"><img src="'.get_bloginfo('template_directory').'/images/hamburger.png"></a>
</div>
'.wp_nav_menu( array( 'theme_location' => 'hoofdmenu' ) ).'
</div>
</header>';
更新:
尝试以下方法:
if(!is_front_page())
echo '<header>
<div class="hoofdmenu">
<div class="hamburger">
<a href="#" id="click-a"><img src="'.get_bloginfo('template_directory').'/images/hamburger.png"></a>
</div>';
wp_nav_menu( array( 'theme_location' => 'hoofdmenu' ) );
echo '
</div>
</header>';
更好的更新:
使用您使用的相同代码,只需将“echo”选项添加到 args 数组。 看来您可以告诉函数返回输出而不是打印输出。
'echo' (bool) 是回显还是返回菜单。默认为真。
用法:
$menu = wp_nav_menu( array( 'theme_location' => 'hoofdmenu', 'echo' => false) );
【讨论】:
【参考方案2】:简单的解决方案。给 echo false ,您的代码将起作用。 来自 WP 文档。
//'echo'
//(bool) Whether to echo the menu or return it. Default true.
$menu = wp_nav_menu( array( 'theme_location' => 'hoofdmenu', 'echo' => false ) );
【讨论】:
以上是关于WordPress 菜单位于标题之外的主要内容,如果未能解决你的问题,请参考以下文章
php 这个WordPress插件演示了如何使用WordPress提供的可拖动元文件构建自己的插件页面,需要WordPr