Wordpress wp_nav_menu即将出现额外的div标签

时间:2015-04-30 11:22:13

标签: php html wordpress menu

当我尝试将新菜单添加到模板文件时,会自动生成一个新的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&amp;分类并删除div

<div class="menu">

我该如何解决这个问题......

4 个答案:

答案 0 :(得分:1)

实际的html输出包含page_item类的项目。这意味着Wordpress显示页面后备菜单。默认情况下,回退菜单在输出中包含<div class="menu">

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

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

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

答案 1 :(得分:0)

可能你可以试试这个 -

$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的更多信息

答案 2 :(得分:0)

你需要这个。

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

答案 3 :(得分:0)

嗯,问题是太老了,但如果他找到一种方法来删除额外的DIV(像我一样),这可能对其他人有帮助。

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

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