block_core_navigation_get_menu_items_at_location

The timeline below displays how wordpress function block_core_navigation_get_menu_items_at_location has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

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;
}