unfulvio / wp-api-menus

:abcd: Menu routes for WordPress JSON REST API.
https://wordpress.org/plugins/wp-api-menus
GNU General Public License v2.0
140 stars 59 forks source link

Add query params for control over including items and fetching specific menu list #62

Open acafourek opened 3 years ago

acafourek commented 3 years ago

We use the plugin on a few sites that have a lot of menus, so it isn't always efficient to get all of them with /menus but it also wouldn't be very efficient to get them all with individual REST calls. So, we've modified the plugin to support parameters on the /menus route that allow us to define the menus we want and whether the API should also return the items from those menus.

So, you can call this and get Menus 38, 475 and 832 along with all the items assigned to them: /wp-json/wp-api-menus/v2/menus?include=38,475,832&include_menu_items=true

You can also fetch Menu 38 using the /menus/<id> route but get it's top-level data without including the nav items: /wp-json/wp-api-menus/v2/menus/38?include_menu_items=false

These two tweaks have let us have a lot more control over what data we load and when (especially useful in scenarios using GraphQL)

I believe this is fully backward compatible and properly defaults to current behaviors so we don't break existing queries.