WordPress菜单放在标题之外

Int*_*ive 2 php wordpress wp-nav-menu-item

如果用户转到主页以外的页面,则我的标题会更改布局.

除了功能,一切正常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>';
?>
Run Code Online (Sandbox Code Playgroud)

为了保持简短,我删除trueif语句的值.

现在我遇到的问题是菜单完全放在了外面 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>
Run Code Online (Sandbox Code Playgroud)

有关为什么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>
Run Code Online (Sandbox Code Playgroud)

Ofi*_*uch 5

(在答案的底部添加了更新,您可以跳过第一部分)

根据文档,该函数显示(echo)菜单,但不返回它.

wp_nav_menu(array $ args = array())

显示导航菜单.

因此,当你使用

$menu = wp_nav_menu( array( 'theme_location' => 'hoofdmenu' ) );
Run Code Online (Sandbox Code Playgroud)

实际上,您打印菜单而不是将其保存在$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>';
Run Code Online (Sandbox Code Playgroud)

更新:

请尝试以下方法:

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>';
}
Run Code Online (Sandbox Code Playgroud)

更新更新:

使用您使用的相同代码,只需将'echo'选项添加到args数组即可.似乎你可以告诉函数返回输出而不是打印输出.

'echo'(bool)是否回显菜单或返回它.默认为true.

用法:

$menu = wp_nav_menu( array( 'theme_location' => 'hoofdmenu', 'echo' => false) );
Run Code Online (Sandbox Code Playgroud)