繁体   English   中英

WordPress的wp_nav_menu即将额外的div标签

[英]Wordpress wp_nav_menu coming extra div tag

当我尝试向模板文件添加新菜单时,会自动出现一个新的div,我不知道这是怎么来的。 现在我想离开这个div。

HTML:

 <nav class="clear-after" id="header-menu">
            <!-- __toggle -->
            <div id="main-menu-toggle"></div>
            <!-- __level 1 -->
            <div class="menu">
  <ul>
    <li class="page_item page-item-22"><a href="http://localhost/one2one/index.php/blog/">Blog</a></li>
<li class="page_item page-item-8 page_item_has_children"><a href="http://localhost/one2one/index.php/company/">Company</a></li>
<li class="page_item page-item-20"><a href="http://localhost/one2one/index.php/contact/">Contact</a></li>
<li class="page_item page-item-6 current_page_item"><a href="http://localhost/one2one/">Home</a></li>
<li class="page_item page-item-18"><a href="http://localhost/one2one/index.php/services/">Services</a></li>
</ul>
</div>
</nav>

PHP代码:

  <nav id="header-menu" class="clear-after">
            <!-- __toggle -->
            <div id="main-menu-toggle"></div>
            <!-- __level 1 -->
            <?php
            wp_nav_menu(array(
                'theme_location' => 'main-menu', 
                'container'=>'',
                'container_class' => '',
                'items_wrap'=>'%3$s',
                'menu_id' => 'main-menu'
            ));
            ?>
        </nav>

我想像下面这样。 需要添加一个ID和类并删除div

<div class="menu">

我该如何解决...

实际的html输出包含具有page_item类的项目。 这意味着Wordpress将显示页面后备菜单。 备用菜单默认在输出中包含<div class="menu">

请参阅Wordpress参考中默认设置中的'fallback_cb' => 'wp_page_menu',选项。 将此选项设置为false将禁用后备菜单,但是您仍需要在Wordpress后端中设置菜单。

要解决此问题,只需通过“ 外观>菜单 ”在Wordpress后端中添加一个菜单,并确保在执行此操作时选中包含主题位置的框(在您的情况下可能是“主菜单”)。 然后,Wordpress将不再使用后备菜单,您的选项将适用。

您可以通过将类menu-item添加到菜单项而不是page_item来识别html输出中的正确菜单。

也许您可以尝试一下-

$defaults = array(
    'theme_location'  => '',
    'menu'            => '',
    'container'       => 'div',
    'container_class' => '',
    'container_id'    => '',
    'menu_class'      => 'menu',
    'menu_id'         => '',
    'echo'            => true,
    'fallback_cb'     => 'wp_page_menu',
    'before'          => '',
    'after'           => '',
    'link_before'     => '',
    'link_after'      => '',
    'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
    'depth'           => 0,
    'walker'          => ''
);

wp_nav_menu( $defaults );

请在wordpress网站上查看有关wp_nav_menu的更多信息

您需要这个。

wp_nav_menu(array(
                    'theme_location' => 'main-menu',
                    'container' => 'div',
                    'container_class' => 'menu',
                    'items_wrap' => '<ul>%3$s</ul>'
                ));

好吧,这个问题太老了,但是如果其他人想办法删除多余的DIV(例如我),这可能会对其他人有所帮助。

解决方案是'fallback_cb'参数。 如果没有为该主题位置指定菜单,则调用fallback函数。 然后,该回调函数的'container'参数可能不存在或未传递,但这导致EXTRA DIV。

因此,在这种情况下,解决方案是使'fallback_cb'空字符串,并强制管理员创建菜单并将该菜单与该'theme_location'相关联。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM