WordPress Version: 5.9
/**
* Returns the menu items for a WordPress menu location.
*
* @param string $location The menu location.
* @return array Menu items for the location.
*/
function block_core_navigation_get_menu_items_at_location($location)
{
if (empty($location)) {
return;
}
// Build menu data. The following approximates the code in
// `wp_nav_menu()` and `gutenberg_output_block_nav_menu`.
// Find the location in the list of locations, returning early if the
// location can't be found.
$locations = get_nav_menu_locations();
if (!isset($locations[$location])) {
return;
}
// Get the menu from the location, returning early if there is no
// menu or there was an error.
$menu = wp_get_nav_menu_object($locations[$location]);
if (!$menu || is_wp_error($menu)) {
return;
}
$menu_items = wp_get_nav_menu_items($menu->term_id, array('update_post_term_cache' => false));
_wp_menu_item_classes_by_context($menu_items);
return $menu_items;
}