Linux 软件免费装
Banner图

WP REST Menus

开发者 skapator
更新时间 2022年2月18日 04:44
PHP版本: 5.6 及以上
WordPress版本: 5.9
版权: GPLv2 or later
版权网址: 版权信息

标签

menus acf polylang api wp-api wp-rest-api wpml REST wp-json v2 json-rest-api wp-rest-menus wp-api-menus menu-api-routes

下载

1.0 1.0.1 1.0.2 1.0.3 1.0.4

详情介绍:

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 The new endpoints available: Get all menus ` 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" }, ... ` Get a menus items by id (term_id) ` GET /menus/v1/menus/ // 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 }, ... ` Get all menu locations All menu locations assigned in /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" } ... ` Get all menu location items All menu locations assigned in /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 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 }, ... ` There are two filters availiable: Fields Filter ` // it will return only the fields specified GET /menus/v1/menus//?fields=ID,title,meta // Response sample // Response sample {\ ID: 5, title: "Home", meta: null }, ... ` Nested Items Filter ` // it will return menu items parents and nested children in a 'children' field // Currently only one level deep is supported GET /menus/v1/menus//?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/) 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/) 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 filtersapply_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.

安装:

There are no requirements other than Wordpress and one active menu. Installation is simple:
  1. Upload the wp-rest-menus folder to the /wp-content/plugins/ directory
  2. Activate the plugin through the 'Plugins' menu in WordPress

常见问题:

How do I use this plugin?

It creates endpoints for wp nav menus to use in your front end.

Can I contribute?

Yes, you can fork it on github.