2017-02-01 43 views
0

如何檢查菜單是否已分配到菜單位置。讓我直接得知:檢查菜單是否分配了位置

我得到了所有使用wp_get_nav_menus()創建的菜單,在獲得菜單後,我使用wp_get_nav_menu_items()獲取了它們的項目。

所以我得到的是這樣的:

主菜單
菜單項目1
菜單項2
菜單項3

但現在我要檢查,如果主菜單有分配的位置,如果未分配到某個位置,則不要打印它。

希望有人能幫助我。

回答

1

您可以使用get_nav_menu_locations()獲取已註冊的菜單位置數組以及分配給這些位置的菜單。

然後,您只需在陣列中檢查您示例中的Primary Menu的ID。如果該值存在關鍵字,則它具有分配的位置。

實施例:

$nav_menus  = wp_get_nav_menus(); 
$menu_locations = get_nav_menu_locations(); 

/** 
* Validate here... skipping for the purpose of answering the 
* question at hand. Would be a good idea to make sure the functions 
* above returned the values we were expecting. 
*/ 

// Here I'm guessing you're simply looping through menus. 
foreach ((array) $nav_menus as $nav_menu) { 

    /** 
    * array_search will tell us if the menu's 'term_id' property 
    * matches any of the values in the locations array. In actual 
    * fact it gives us the key but that's not necessary here. 
    */ 
    if (array_search($nav_menu->term_id, $menu_locations)) { 

     // menu has a location - output here... 

    } 

} 

參考文獻:https://developer.wordpress.org/reference/functions/get_nav_menu_locations/

http://php.net/manual/en/function.array-search.php