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 菜单位于标题之外的主要内容,如果未能解决你的问题,请参考以下文章

在 Wordpress 中确认离开外部链接

实战Wordpres的CSRF漏洞利用

下拉子菜单问题

php 这个WordPress插件演示了如何使用WordPress提供的可拖动元文件构建自己的插件页面,需要WordPr

限制 Wordpress 用户只能查看页面和帖子

为啥我的菜单项会激活滚动功能?