是否以非常具体的方式修改wp_NAV_MENU的输出?

时间:2013-09-28 作者:JoshuaD

我试图让wp\\U nav\\U菜单输出如下内容:

<div id="topMenu" class="spanningMenu noPrint">
    <ul>
        <li class="topMenuDivider"></li>
        <li><a href="#">Home</a></li>
        <li class="topMenuDivider">|</li>
        <li><a href="#>Contact Us</a></li>
        <li class="topMenuDivider">|</li>
        <li><a href="#>Services</a></li>
        <li class="topMenuDivider"></li>
    </ul>
</div>
我快到了,但我还没到那里。这就是我迄今为止所做的,以及我得到的结果:

代码:

    <?php 
        $defaults = array(
            \'theme_location\'  => \'Primary Menu\',
            \'menu\'            => \'Primary Menu\',
            \'container\'       => \'div\',
            \'container_class\' => \'spanningMenu noPrint\', 
            \'container_id\'    => \'topMenu\',
            \'fallback_cb\'     => \'\',
            \'after\'           => \'<li class="topMenuDivider">|</li>\',
            \'items_wrap\'      => \'<ul><li class="topMenuDivider"></li>%3$s<li class="topMenuDivider"></li></ul>\',

        );

        wp_nav_menu($defaults);

    ?>
结果:

<div id="topMenu" class="spanningMenu noPrint">
    <ul>
        <li class="topMenuDivider"></li>
        <li id="menu-item-51" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-2 current_page_item menu-item-51"><a href="#">Home</a>
            <li class="topMenuDivider">|</li>
        </li>
        <li id="menu-item-50" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-50"><a href="#">Contact Us</a>
            <li class="topMenuDivider">|</li>
        </li>
        <li id="menu-item-49" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-49"><a href="#">Services</a>
            <li class="topMenuDivider">|</li>
        </li>
        <li class="topMenuDivider"></li>
    </ul>
</div>
所以我还有三件事要做,我不知道怎么做:

去掉li上的所有id和class标记,我不知道它们是在哪里生成的的最后一个li这可能吗?

编辑:

通过如下更改这些行,我已解决了#2问题。这是一种黑客行为,但它是有效的:

            \'after\'           => \'</li><li class="topMenuDivider">|\',
            \'items_wrap\'      => \'<ul><li class="topMenuDivider"></li>%3$s<li class="topMenuDivider"></li></ul>\',

1 个回复
SO网友:TomHarrigan

在此处查看#1:remove li class & id for menu items and pages list

关于第#2和#3项,为什么不使用CSS来执行此操作?分离器不应该是自己的<li> 标记。以下CSS将添加| 在每个菜单项之后,最后一个除外。

#topMenu ul li a:after {
  content: "|";
  display: inline-block;
  margin-left: .618em;
  width: 1em;
}
#topMenu ul li:last-child a:after {
  display: none;
}

结束

相关推荐

Primary and secondary menus

我试图使主菜单上的每个选项卡都链接到次菜单,这样实际上,每个主选项卡都会指向次菜单中的一组选项卡,而不是保持静态。我希望你能帮助我,我不是一个高级WP用户,所以可以使用简单的术语。更新我已经添加了代码,但它已经显示在我的网页和仪表板上,所以我一定是弄错了,所以我将其粘贴在下面,以便您可以看到。我不知道如何找到主弹头,但我想这是我在主弹头上添加的内容。function km_dynamic_secondary_menu_reg() { global $km_nav_menus;