2013-02-24 74 views
1

我有一块HTML菜单,我想用wp_nav_menu在Wordpress中显示。删除wp_nav_menu中的子菜单范围

的HTML

<nav id="navigation" class="ddsmoothmenu"> 
<ul id="main-menu"> 
    <li><a href="index.html" class="current"><span>Home</span></a> 
     <ul> 
      <li><a href="index-2.html">Home Alternate 2</a></li> 
      <li><a href="index-3.html">Home Alternate 3</a></li> 
      <li><a href="index-4.html">Home Alternate 4</a></li> 
      <li><a href="index-5.html">Home Alternate 5</a></li> 
      <li><a href="index-6.html">Home Alternate 6</a></li> 
     </ul> 
    </li> 
</ul> 

我加入我的WordPress的header.php文件下面显示的导航菜单

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

但是输出添加标签也第二级菜单项为

<nav id="navigation" class="ddsmoothmenu"> 
<ul id="main-menu"> 
    <li><a href="index.html" class="current"><span>Home</span></a> 
     <ul> 
      <li><a href="index-2.html"><span>Home Alternate 2</span></a></li> 
      <li><a href="index-3.html"><span>Home Alternate 3</span></a></li> 
      <li><a href="index-4.html"><span>Home Alternate 4</span></a></li> 
      <li><a href="index-5.html"><span>Home Alternate 5</span></a></li> 
      <li><a href="index-6.html"><span>Home Alternate 6</span></a></li> 
     </ul> 
    </li> 
</ul> 

是否有一种方法可以仅为顶级菜单项添加跨度或从第二级项目中删除跨度?

+0

一种方式子菜单写自己的沃克类(可修改默认的):http://wp.tutsplus.com/tutorials/creative-coding/understanding-the-walker-class/ – 2013-02-24 17:56:32

+0

谢谢Calle。这肯定是一种方式,尽管我似乎已经发现jQuery更简单。将在这里发布答案。 – Ranadeep 2013-02-24 18:16:00

回答

3
add_filter('wp_nav_menu_objects', function($items) { 
     foreach ($items as $item) { 
     if (!$item->menu_item_parent) { 
      $item->title = '<span>' . $item->title . '</span>'; 
     } 
    } 
    return $items; 
}); 
+0

以某种方式向父项添加额外的跨度,并且不删除子菜单项的跨度。 – Ranadeep 2013-02-25 06:50:57

+0

你需要将你的link_before和link_after设置为NULL。 – 2013-02-25 19:06:15

+0

啊......我现在明白了......谢谢... – Ranadeep 2013-02-25 21:37:12

0

好的,虽然沃克似乎是完成这件事的一个好方法,但它似乎与许多代码行相当精巧。我发现删除子菜单项的跨度最简单的方法是使用jQuery。 WordPress的自动添加子菜单类的子ul,因此什么对我有效

$('ul.sub-menu li a span').contents().unwrap(); 

希望这会有所帮助。

0

使用CSS,你可以隐藏的wp_nav_menu

.sub-menu { display:none; }