1. Home
  2. WordPress
  3. APi Development
  4. Get Menu by menu name

Get Menu by menu name

function register_menu_rest_route() {
    register_rest_route('custom/v1', '/menus/(?P<menu_name>[a-zA-Z0-9_-]+)', array(
        'methods'  => 'GET',
        'callback' => 'get_menu_by_name',
        'permission_callback' => '__return_true', // Allow public access
    ));
}

add_action('rest_api_init', 'register_menu_rest_route');

function get_menu_by_name($data) {
    $menu_name = $data['menu_name'];
    $menu = wp_get_nav_menu_items($menu_name);
    
    if (empty($menu)) {
        return new WP_Error('no_menu', 'Invalid menu location', array('status' => 404));
    }

    return $menu;
}

How can we help?