检查菜单是否指定了位置

时间:2017-02-01 00:57:16

标签: wordpress

如何检查菜单是否已分配到菜单位置。让我直截了当地说:

我使用wp_get_nav_menus()创建了所有菜单,在我获得菜单后,我使用wp_get_nav_menu_items()获取了他们的项目。

所以我得到这样的东西:

主菜单
菜单项1
菜单项2
菜单项3

但现在我想检查主菜单是否分配了位置,如果没有分配到某个位置,则不要打印它。

希望有人可以帮助我。

1 个答案:

答案 0 :(得分: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