2017-06-25 22 views
0

私はいくつかの項目(WooCommerceカテゴリ)を持つメニューを作成しました。それぞれのメニュー項目は子商品(WooCommerce製品)はほとんどありません。親メニュー項目のサブ項目を取得するには?

私は親メニュー項目のサブ項目を取得するのに苦労しています。イムは、このコードを使用して親アイテムを

を取得:

$the_menu  = wp_get_nav_menu_object('Some Menu'); 
$the_menu_items = wp_get_nav_menu_items($the_menu); 

foreach ($the_menu_items as $index => $menu_item) { 
    if ($menu_item->object_id == $category->term_id) { 
     $category_submenu = $menu_item; 
    } 
} 

は、どのように私は、現在の親項目の子項目を取得することができますか?

ありがとうございます!

$the_menu  = wp_get_nav_menu_object('Some Menu'); 
$the_menu_items = wp_get_nav_menu_items($the_menu); 

$category_products = []; 

foreach ($the_menu_items as $index => $menu_category) { 
    if ($menu_category->object_id == $category->term_id) { 
     $category_submenu = $menu_category; 
    } 
} 

foreach ($the_menu_items as $index => $menu_product) { 
    if ($menu_product->type_label == 'Product' 
     && $menu_product->menu_item_parent == $category_submenu->ID 
    ) { 
     $category_products[] = $menu_product; 
    } 
} 

私は現在のカテゴリIDに基づいて、必要な項目を取得し、その後、サブを取得し、すべてのメニュー項目(親項目とサブ項目の両方)を解析している:私はこの一時的な解決策を持っている回避策として

答えて

1

すべての子に対して再帰が必要です。ここで

if (! function_exists('recursive_mitems_to_array')) { 
    /** 
    * @param $items 
    * @param int $parent 
    * 
    * @return array 
    */ 
    function recursive_mitems_to_array($items, $parent = 0) 
    { 
     $bundle = []; 
     foreach ($items as $item) { 
      if ($item->menu_item_parent == $parent) { 
       $child    = recursive_mitems_to_array($items, $item->ID); 
       $bundle[ $item->ID ] = [ 
        'item' => $item, 
        'childs' => $child 
       ]; 
      } 
     } 

     return $bundle; 
    } 
} 

使用法:

$items = wp_get_nav_menu_items("Default Theme Menu"); // Your menu title 
$build_tree = recursive_mitems_to_array($items); 

var_dump(build_tree); 

注:あなたのニーズに合わせて正しいです。

多分、値とともにhtmlを出力する必要があります。

この例はネストされた配列を返します(完全にテストされていません)

+0

あなたのアプローチはきれいです。 :) ありがとうございました! – Eseth

0

もう一度すべてのアイテムを解析して、現在のアイテム(製品)の親IDが親カテゴリのアイテムIDと一致するかどうかをチェックし、配列に入れるだけで、各カテゴリのアイテム(製品)

関連する問題