2017-05-02 84 views
2

實例:Appearance-顯示菜單項,只有當他們有子菜單在WordPress的

菜單佈局>菜單

菜單名稱:主菜單

關於我們(菜單) - 聯繫人(子菜單) - 團隊(子菜單) - 投資組合(submenu)

這四個頁面需要顯示所有四個菜單項,包括父項:關於我們,聯繫人,團隊和投資組合。

目前我只能顯示子菜單項目,如:聯繫人,團隊和投資組合。所以我錯過了父母。

如何顯示父菜單項(例如:關於我們)?

這是我如何調用菜單:

<?php // Usage: 
       $args = array(
        'menu'  => 'Main menu', 
        'sub_menu' => true, 
       ); 
       wp_nav_menu($args); 
       ?> 

這是我用於顯示的子菜單中的功能:

// add hook 
add_filter('wp_nav_menu_objects', 'my_wp_nav_menu_objects_sub_menu', 10, 2); 
// filter_hook function to react on sub_menu flag 
function my_wp_nav_menu_objects_sub_menu($sorted_menu_items, $args) { 
    if (isset($args->sub_menu)) { 
     $root_id = 0; 

     // find the current menu item 
     foreach ($sorted_menu_items as $menu_item) { 
      if ($menu_item->current) { 
       // set the root id based on whether the current menu item has a parent or not 
       $root_id = ($menu_item->menu_item_parent) ? $menu_item->menu_item_parent : $menu_item->ID; 
       break; 
      } 
     } 

     // find the top level parent 
     if (! isset($args->direct_parent)) { 
      $prev_root_id = $root_id; 
      while ($prev_root_id != 0) { 
       foreach ($sorted_menu_items as $menu_item) { 
        if ($menu_item->ID == $prev_root_id) { 
         $prev_root_id = $menu_item->menu_item_parent; 
         // don't set the root_id to 0 if we've reached the top of the menu 
         if ($prev_root_id != 0) $root_id = $menu_item->menu_item_parent; 
         break; 
        } 
       } 
      } 
     } 
     $menu_item_parents = array(); 
     foreach ($sorted_menu_items as $key => $item) { 
      // init menu_item_parents 
      if ($item->ID == $root_id) $menu_item_parents[] = $item->ID; 
      if (in_array($item->menu_item_parent, $menu_item_parents)) { 
       // part of sub-tree: keep! 
       $menu_item_parents[] = $item->ID; 
      } else if (! (isset($args->show_parent) && in_array($item->ID, $menu_item_parents))) { 
       // not part of sub-tree: away with it! 
       unset($sorted_menu_items[$key]); 
      } 
     } 

     return $sorted_menu_items; 
    } else { 
     return $sorted_menu_items; 
    } 
} 

回答

0

只需添加「show_parent」選項$ args數組和集合它確實:

$args = array(
    'menu'  => 'Main menu', 
    'sub_menu' => true, 
    'show_parent' => true, 
); 
+0

我昨天試過,但它似乎現在工作,謝謝! –