2017-02-01 10 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

関連する問題