2011-12-26 96 views
3

我想在回顯wp_list_pages的結果時爲每個li添加級別類。目前,我使用:添加水平選擇器類到wordpress導航菜單

<?php 

    wp_nav_menu(array('theme_location' => 'main_menu', 'container' => '', 'menu_class' => 'fR clearfix', 'menu_id' => 'nav')); 

<?php } ?> 

所需的輸出將是:

<ul class="menu"> 
    <li class="page_item page-item-9 level-0 current_page_item"><a href="" title=""></a> 
     <ul class="children expanded" style="display: block; "> 
     <li class="page_item page-item-40 level-1"><a href="" title=""></a></li> 
     <li class="page_item page-item-43 level-1"><a href="" title=""></a></li> 
     <li class="page_item page-item-45 level-1"><a href="" title=""></a></li> 
     <li class="page_item page-item-47 level-1"><a href="" title=""></a></li> 
     </ul> 
    </li> 
    <!-- So on --> 
</ul> 

這是可能有所需的輸出?請幫忙!

回答

7

沒有直接的方式來做到這一點。

您可以使用wp_nav_menu_objects過濾器並操作菜單項的類。

下面是代碼爲您提供:

<?php 
add_filter('wp_nav_menu_objects' , 'my_menu_class'); 
function my_menu_class($menu) { 
    $level = 0; 
    $stack = array('0'); 
    foreach($menu as $key => $item) { 
     while($item->menu_item_parent != array_pop($stack)) { 
      $level--; 
     } 
     $level++; 
     $stack[] = $item->menu_item_parent; 
     $stack[] = $item->ID; 
     $menu[$key]->classes[] = 'level-'. ($level - 1); 
    }      
    return $menu;   
}