2013-02-24 31 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; }