WordPress 菜单放在 header 之外
WordPress menu is placed outside the header
如果用户转到主页以外的页面,那么我的 header 会更改布局。
除函数 wp_nav_menu
.
外,一切正常
首先,我检查用户是否在主页上。根据该结果,向用户显示两个 header 之一。
代码如下:
<?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>';
?>
为了简短起见,我删除了 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 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>
(在答案底部添加了更新,您可以跳过第一部分)
根据 Docs,函数显示 (echo
) 菜单,不 return 。
wp_nav_menu( array $args = array() )
Displays a navigation menu.
因此,当您使用
$menu = wp_nav_menu( array( 'theme_location' => 'hoofdmenu' ) );
您实际打印菜单而不是将其保存在 $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>';
更新:
尝试以下操作:
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>';
}
更好的更新:
使用与之前相同的代码,只需将 'echo' 选项添加到 args 数组。
看来您可以告诉函数 return 输出而不是打印它。
'echo' (bool) Whether to echo the menu or return it. Default true.
用法:
$menu = wp_nav_menu( array( 'theme_location' => 'hoofdmenu', 'echo' => false) );
简单的解决方案。给 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 ) );
如果用户转到主页以外的页面,那么我的 header 会更改布局。
除函数 wp_nav_menu
.
首先,我检查用户是否在主页上。根据该结果,向用户显示两个 header 之一。
代码如下:
<?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>';
?>
为了简短起见,我删除了 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 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>
(在答案底部添加了更新,您可以跳过第一部分)
根据 Docs,函数显示 (echo
) 菜单,不 return 。
wp_nav_menu( array $args = array() )
Displays a navigation menu.
因此,当您使用
$menu = wp_nav_menu( array( 'theme_location' => 'hoofdmenu' ) );
您实际打印菜单而不是将其保存在 $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>';
更新:
尝试以下操作:
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>';
}
更好的更新:
使用与之前相同的代码,只需将 'echo' 选项添加到 args 数组。 看来您可以告诉函数 return 输出而不是打印它。
'echo' (bool) Whether to echo the menu or return it. Default true.
用法:
$menu = wp_nav_menu( array( 'theme_location' => 'hoofdmenu', 'echo' => false) );
简单的解决方案。给 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 ) );