Title: WP REST Menus
Author: skapator
Published: <strong>4. juli, 2018</strong>
Last modified: 17. februar, 2022

---

Søg plugins

![](https://ps.w.org/wp-rest-menu/assets/banner-772x250.png?rev=2678035)

Dette plugin **er ikke blevet testet med de seneste 3 større udgivelser af WordPress**.
Det vedligeholdes eller understøttes muligvis ikke længere og kan have kompatibilitetsproblemer,
når det bruges med nyere versioner af WordPress.

![](https://ps.w.org/wp-rest-menu/assets/icon-128x128.png?rev=2678036)

# WP REST Menus

 Af [skapator](https://profiles.wordpress.org/skapator/)

[Download](https://downloads.wordpress.org/plugin/wp-rest-menu.1.0.4.zip)

 * [Detaljer](https://da.wordpress.org/plugins/wp-rest-menu/#description)
 * [Vurderinger](https://da.wordpress.org/plugins/wp-rest-menu/#reviews)
 *  [Installation](https://da.wordpress.org/plugins/wp-rest-menu/#installation)
 * [Udvikling](https://da.wordpress.org/plugins/wp-rest-menu/#developers)

 [Support](https://wordpress.org/support/plugin/wp-rest-menu/)

## Beskrivelse

This plugin adds new endpoints for WordPress registered menus.
 Usefull when building
SPAs with Vuejs, React or any front-end framework. Works with Advacned Custom Fields,
WPML, Polylang

De nye slutadresser som er tilgængelige:

**Hent alle menuer**

    ```
    GET /menus/v1/menus

    // Response sample
    {  
        term_id: 2,
        name: "Main Menu",
        slug: "main-menu",
        term_group: 0,
        term_taxonomy_id: 2,
        taxonomy: "nav_menu",
        description: "",
        parent: 0,
        count: 8,
        filter: "raw"
    },
    ...
    ```

**Hen en menus elementer via id (term_id)**

    ```
    GET /menus/v1/menus/<id>

    // Response sample
    {  
        ID: 5,
        post_author: "1",
        post_date: "2018-07-03 06:42:18",
        post_date_gmt: "2018-07-03 06:42:18",
        filter: "raw",
        db_id:5,
        menu_item_parent: "0",
        object_id: "5",
        object: "custom",
        type: "custom",
        type_label: "Custom Link",
        title: "Home",
        url: "https:\/\/wp-rest-menu.local\/",
        target: "",
        attr_title: "",
        description: "",
        classes: [  
         ""
        ],
        xfn: "",
        meta: null
    },
    ...
    ```

**Hent alle menuernes adresser**
 Alle menuernes adresser findes i /wp-admin/nav-
menus.php?action=locations

    ```
    GET /menus/v1/menus/locations is deprecated and will be removed in newer versions use:
    GET /menus/v1/locations

    // Response example
    {  
        slug: "top",
        description: "Top Menu"
    },
    {  
        slug: "social",
        description: "Social Links Menu"
    }
    ...
    ```

**Hent alle menu adressers elementer**
 Alle menuerne er tilskrevet denne slutadresse:/
wp-admin/nav-menus.php?action=locations

    ```
    GET /menus/v1/menus/locations/<slug> is deprecated and will be removed in newer versions use:
    GET /menus/v1/locations/<slug>

    // Response samexampleple
    {  
        ID: 5,
        post_author: "1",
        post_date: "2018-07-03 06:42:18",
        post_date_gmt: "2018-07-03 06:42:18",
        filter: "raw",
        db_id:5,
        menu_item_parent: "0",
        object_id: "5",
        object: "custom",
        type: "custom",
        type_label: "Custom Link",
        title: "Home",
        url: "https:\/\/wp-rest-menu.local\/",
        target: "",
        attr_title: "",
        description: "",
        classes: [  
         ""
        ],
        xfn: "",
        meta: null
    },
    ...
    ```

To filtre er tilgængelige:

**Filter for felter**

    ```
    // it will return only the fields specified
    GET /menus/v1/menus/<id>/?fields=ID,title,meta

    // Response sample
    // Response sample
    {  
        ID: 5,
        title: "Home",
        meta: null
    },
    ...
    ```

**Filter for indesluttede elementer**

    ```
    // it will return menu items parents and nested children in a 'children' field
    // Currently only one level deep is supported
    GET /menus/v1/menus/<id>/?nested=1

    // Response sample
    {  
      ID: 1716,
      menu_item_parent: "0",
      object_id: "174",
      object: "page",
      title: "Level 1",
      meta: {  
         vue_component: "LevelComponent",
         menu-item-field-01: "Field 1 value",
         menu-item-field-02: "Field 2 value"
      },
      children:[  
         {  
            ID: 1717,
            menu_item_parent: "1716",
            object_id: "744",
            object: "page",
            title: "Level 2b",
            meta : {  
               vue_component: null
            }
         },
         ...
      ]
    },
    ...
    ```

**WP filter hooks**

This plugin is quite configurable and provides lots of wp filter hooks from returned
data in responses for each endpoint to params validation and endpoint permissions.

    ```
    add_filter( 'wprm/get_menus/wp_get_nav_menus/args', 'my_wp_get_nav_menus', 10, 1 );
    (used in GET /menus/v1/menus)

    function my_wp_get_nav_menus( $args ) {
        // do something with wp_get_nav_menus $args array
        return $args;
    }



    add_filter( 'wprm/get_menus', 'my_get_menus', 10, 1 );
    (used in GET /menus/v1/menus)

    function my_get_menus( $menus ) {
        // do something with $menus array

        return $menus; // WP_Error|WP_HTTP_Response|WP_REST_Response|mixed
    }



    add_filter( 'wprm/get_menu_locations', 'my_get_menu_locations', 10, 1 );
    (used in GET /menus/v1/locations)

    function my_get_menu_locations( $locations ) {
        // You can modify the $locations array response (get_registered_nav_menus())

        return $locations; // WP_Error|WP_HTTP_Response|WP_REST_Response|mixed
    }



    add_filter( 'wprm/get_menu_items', 'my_get_menu_items', 10, 1 );
    (used in GET /menus/v1/menus/<id>)

    function my_rest_menu_item_fields( $menu ) {
        // You can modify the $menu items

        return $menu;
    }



    add_filter( 'wprm/get_location_menu_items', 'my_get_location_menu_items', 10, 1 );
    (used in GET /menus/v1/menus/<id>)

    function my_get_location_menu_items( $menu ) {
        // You can modify the locations $menu items

        return $menu;
    }



    add_filter( 'wprm/get_item_fields/filter_fields', 'my_filter_fields', 10, 1 );
    (used to filter return field -node edges-)

    function my_filter_fields( $fields ) {
        // You can modify the $fields array so
        // you can filter the return fields for all endpoints
        // without using the url param ?fields

        $fields = array( 'ID', 'title' );
        return $fields;
    }
    ```

More filters

    ```
    apply_filters('wprm/get_menus/permissions', '__return_true', $request );
    apply_filters('wprm/get_menu_locations/permissions', '__return_true', $request );
    apply_filters('wprm/get_menu_items/permissions', '__return_true', $request );
    apply_filters('wprm/get_menu_items/validate/args/id', is_numeric( $param ), $param, $request, $key );
    apply_filters('wprm/get_menu_items/validate/args/fields', is_string( $param ), $param, $request, $key );
    apply_filters('wprm/get_menu_items/validate/args/nested', absint( $param ), $param, $request, $key );
    apply_filters('wprm/get_location_menu_items/permissions', '__return_true', $request );
    apply_filters('wprm/get_location_menu_items/validate/args/slug', is_string( $param ), $param, $request, $key );
    apply_filters('wprm/get_location_menu_items/validate/args/fields', is_string( $param ), $param, $request, $key );
    apply_filters('wprm/get_location_menu_items/validate/args/nested', absint( $param ), $param, $request, $key );
    apply_filters('wprm/get_location_menu_items/permissions', '__return_true', $request );
    apply_filters('wprm/get_location_menu_items/validate/args/slug', is_string( $param ), $param, $request, $key );
    apply_filters('wprm/get_location_menu_items/validate/args/fields', is_string( $param ), $param, $request, $key );
    apply_filters('wprm/get_location_menu_items/validate/args/nested', absint( $param ), $param, $request, $key );
    ```

Supports custom fields and Advanced Custom Fields
 If ACF is installed the response
node edge is _acf_ else _meta_ In newer version these two edges will co exist and
the plugin will separate natively registered custom fields ad acf registered ones.

## Installation

Der er ikke andre krav end WordPrss og en aktiv menu. Installationen er ganske enkel:

 1. Upload til `wp-rest-menus` folder to the `/wp-content/plugins/` mappen
 2. Aktiver pluginet via ‘Plugins* menuen i WordPress

## FAQ

### Hvordan bruger jeg dette plugin?

Det skaber slutadresser for wp nav menuer som du kan bruge i din front-end.

### Kan jeg bidrage til projektet?

Ja, du kan lave en gren med det på [github](https://github.com/skapator/wp-rest-menus).

## Anmeldelser

![](https://secure.gravatar.com/avatar/37bcaa4b105b6508e8ef8c46657c26ab36fb13a51d3501cb43849c8ade7c0dd5?
s=60&d=retro&r=g)

### 󠀁[Awesome plugin!](https://wordpress.org/support/topic/awesome-plugin-4955/)󠁿

 [Yiannis Christodoulou](https://profiles.wordpress.org/yiannistaos/) 12. april,
2020

This plugin is what I was looking for! Very easy to add new endpoints in WP menus.
Thanks!

![](https://secure.gravatar.com/avatar/59b970a8a077a00b3420c01d7c5c54435c3621154be14b7ffd40eed375509335?
s=60&d=retro&r=g)

### 󠀁[Better than WP-REST-API V2 Menus](https://wordpress.org/support/topic/better-than-wp-rest-api-v2-menus/)󠁿

 [ITomSawyerI](https://profiles.wordpress.org/itomsawyeri/) 5. april, 2020

This plugin has a fields filter ability.

![](https://secure.gravatar.com/avatar/e455bfa29d9ef411c3406fa90f86d63543024adac0c15efefea6e186220e9b81?
s=60&d=retro&r=g)

### 󠀁[Awesome for building front end apps with wp-rest api for dynamic menus](https://wordpress.org/support/topic/awesome-for-building-front-end-apps-with-wp-rest-api-for-dynamic-menus/)󠁿

 [imaginena](https://profiles.wordpress.org/imaginena/) 26. november, 2018

Just saved some days on development, thrilled that ACF is supported. Thumbs up, 
good work.

![](https://secure.gravatar.com/avatar/72d107aaf08236cc9f8995145eeb62d5815253825c7a9978a38ed455bf410773?
s=60&d=retro&r=g)

### 󠀁[Does exactly what it’s supposed to do!!!](https://wordpress.org/support/topic/does-exactly-what-its-supposed-to-do-16/)󠁿

 [alexitsios](https://profiles.wordpress.org/alexitsios/) 9. november, 2018

I've been searching for something like that for some time now. Really grateful that
it supports Advanced Custom Fields and meta fields.

 [ Læs alle 3 anmeldelser ](https://wordpress.org/support/plugin/wp-rest-menu/reviews/)

## Bidragsydere & udviklere

“WP REST Menus” er open source-software. Følgende personer har bidraget til dette
plugin.

Bidragsydere

 *   [ skapator ](https://profiles.wordpress.org/skapator/)

[Oversæt “WP REST Menus” til dit eget sprog.](https://translate.wordpress.org/projects/wp-plugins/wp-rest-menu)

### Interesseret i udvikling?

[Gennemse koden](https://plugins.trac.wordpress.org/browser/wp-rest-menu/), tjek
[SVN repository](https://plugins.svn.wordpress.org/wp-rest-menu/), eller abonner
på [udviklerloggen](https://plugins.trac.wordpress.org/log/wp-rest-menu/) via [RSS](https://plugins.trac.wordpress.org/log/wp-rest-menu/?limit=100&mode=stop_on_copy&format=rss).

## Meta

 *  Version **1.0.4**
 *  Senest opdateret **5 år siden**
 *  Aktive installationer **100+**
 *  WordPress-version ** 5.0 eller højere **
 *  Testet op til **5.9.19**
 *  PHP-version ** 5.6 eller højere **
 *  Sprog
 * [English (US)](https://wordpress.org/plugins/wp-rest-menu/)
 * Tags
 * [api](https://da.wordpress.org/plugins/tags/api/)[v2](https://da.wordpress.org/plugins/tags/v2/)
   [wp-rest-api](https://da.wordpress.org/plugins/tags/wp-rest-api/)
 *  [Avanceret visning](https://da.wordpress.org/plugins/wp-rest-menu/advanced/)

## Bedømmelser

 5 ud af 5 stjerner.

 *  [  4 5-stjernet anmeldelser     ](https://wordpress.org/support/plugin/wp-rest-menu/reviews/?filter=5)
 *  [  0 4-stjernet anmeldelser     ](https://wordpress.org/support/plugin/wp-rest-menu/reviews/?filter=4)
 *  [  0 3-stjernet anmeldelser     ](https://wordpress.org/support/plugin/wp-rest-menu/reviews/?filter=3)
 *  [  0 2-stjernet anmeldelser     ](https://wordpress.org/support/plugin/wp-rest-menu/reviews/?filter=2)
 *  [  0 1-stjernet anmeldelser     ](https://wordpress.org/support/plugin/wp-rest-menu/reviews/?filter=1)

[Din anmeldelse](https://wordpress.org/support/plugin/wp-rest-menu/reviews/#new-post)

[Se alle anmeldelser](https://wordpress.org/support/plugin/wp-rest-menu/reviews/)

## Bidragsydere

 *   [ skapator ](https://profiles.wordpress.org/skapator/)

## Support

Har du noget at sige? Har du brug for hjælp?

 [Vis supportforum](https://wordpress.org/support/plugin/wp-rest-menu/)