2017-05-02 8 views
2

例では、サブメニューのを持っている場合にのみ、メインメニュー会社案内表示するメニュー項目は、彼らがWordpressの

(メニュー) - (サブメニュー) - チーム(サブメニュー) - ポートフォリオ私達について、連絡先、チームとポートフォリオ:(サブメニュー)

これらの4つのページには、親を含め、すべての4つのメニュー項目を表示する必要があります。連絡先、チームやポートフォリオ:

現在、私はのみだけなので、サブメニュー項目を表示することができています。だから私は、親が行方不明です。同様:

にはどうすれば親メニュー項目(会社概要例)を表示することができますか?

これは私がメニューを呼び出す方法です:

<?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

ちょうど$ args配列とセットに「show_parent」オプションを追加それは本当です:

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

私はこれを試しましたが、今働いているようです、ありがとう! –

関連する問題