如果用户转到主页以外的页面,则我的标题会更改布局。
除了函数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 width="80" height="80" src="'.get_bloginfo('template_directory').'/images/hamburger.png"></a>
</div>
'.$menu.'
</div>
</header>';
?>
为了简短起见,我删除了true
语句的if
值。
现在我遇到的问题是菜单完全放在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 width="80" height="80" 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 width="80" height="80" src="'.get_bloginfo('template_directory').'/images/hamburger.png"></a>
</div>
'.wp_nav_menu( array( 'theme_location' => 'hoofdmenu' ) ).'
</div>
</header>
答案 0 :(得分:5)
(在答案的底部添加了更新,您可以跳过第一部分)
根据Docs,功能显示(echo
)菜单,不返回。
wp_nav_menu(array $ 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 width="80" height="80" 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 width="80" height="80" src="'.get_bloginfo('template_directory').'/images/hamburger.png"></a>
</div>';
wp_nav_menu( array( 'theme_location' => 'hoofdmenu' ) );
echo '
</div>
</header>';
}
更新更新:
使用您使用的相同代码,只需添加“回声”&#39; args数组的选项。 看来你可以告诉函数返回输出而不是打印输出。
&#39;回波&#39; (bool)是否回显菜单或返回它。默认为真。
用法:
$menu = wp_nav_menu( array( 'theme_location' => 'hoofdmenu', 'echo' => false) );
答案 1 :(得分:1)
简单的解决方案。将echo设为false,您的代码将起作用。 来自WP Docs。
//'echo'
//(bool) Whether to echo the menu or return it. Default true.
$menu = wp_nav_menu( array( 'theme_location' => 'hoofdmenu', 'echo' => false ) );