Extends WordPress WP REST API with new routes pointing to WordPress menus.
This plugin extends the WordPress JSON REST API with new routes for WordPress registered menus
The new routes available will be:
/menus
list of every registered menu./menus/<id>
data for a specific menu./menu-locations
list of all registered theme locations./menu-locations/<location>
data for menu in specified menu in theme location.Currently, the menu-locations/<location>
route for individual menus will return a tree with full menu hierarchy, with correct menu item order and listing children for each menu item. The menus/<id>
route will output menu details and a flat array of menu items. Item order or if each item has a parent will be indicated in each item attributes, but this route won’t output items as a tree.
You can alter the data arrangement of each individual menu items and children using the filter hook json_menus_format_menu_item
.
An important note on WP API V2:
In V1 the routes are located by default at wp-json/menus/
etc.
In V2 the routes by default are at wp-json/wp-api-menus/v2/
(e.g. wp-json/wp-api-menus/v2/menus/
, etc.) since V2 encourages prefixing and version namespacing.
This plugin requires having WP API installed and activated or it won’t be of any use.
Install the plugin as you would with any WordPress plugin in your wp-content/plugins/
directory or equivalent.
Once installed, activate WP API Menus from WordPress plugins dashboard page and you’re ready to go, WP API will respond to new routes and endpoints to your registered menus.
There’s no such thing.
You can submit a pull request to:
https://github.com/unfulvio/wp-api-menus
However, menu data organization in json is a bit arbitrary and subjective, and that’s why probably hasn’t made it into WP API by the time of writing. You could also fork this plugin altogether and write your json output for a specific use case.
object_slug
property is now available to get the slug for relative URLs – props @Fahrradfluchtid
instead of uppercase ID
in API responses, to match the standard lowercase id
used across WP REST API – props @puredazzlejson_menus_format_menu_item
filter hook – props @Noctinedescription
attribute for individual items is now included in resultsparent
with collection
in meta