2013-02-24 3 views
1

wp_nav_menu를 사용하여 Wordpress에 표시 할 HTML 메뉴가 있습니다.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> 

나는이 (가) 탐색 메뉴 출력이 또한 태그를 추가하고 그러나

$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); 

을 표시하기 위해 내 워드 프레스 header.php 파일에 다음을 추가하고 메뉴 항목의 두 번째 수준은

<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

한 가지 방법의 하위 메뉴를 숨길 수 있습니다 CSS입니다 사용/자습서/창조 - 코딩/이해 - the-walker-class/ –

+0

감사 칼. jQuery를 사용하면 더 쉬운 옵션을 찾은 것 같지만 확실히 방법입니다. 여기에 답변을 게시합니다. – Ranadeep

답변

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

+0

link_before 및 link_after를 NULL로 설정해야합니다. –

+0

아 ... 이제 알 겠어 ... 고마워 ... – Ranadeep

0

좋아요, 보행기가이 일을 처리하는 좋은 방법 인 것처럼 보이지만 여러 줄의 코드로 보행자가 꽤 정교 해 보이는 것 같습니다. 방금 jQuery를 사용하여 하위 메뉴 항목의 범위를 제거하는 가장 쉬운 방법이라는 것을 알게되었습니다. Wordpress는 자동으로 자식 ul에 하위 메뉴 클래스를 추가하므로 나를 위해 작동하는 것은

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

희망입니다. http://wp.tutsplus.com :

0

자신의 워커 클래스 (즉, 기본 하나를 수정) 작성하는 당신이 wp_nav_menu

.sub-menu { display:none; }