REST API: Introduce Menu management endpoints.
This commit introduces the `/wp/v2/menus`, `/wp/v2/menu-items` and `/wp/v2/menu-locations` REST API endpoints. These endpoints are fully available to users with the `edit_theme_options` capability, but can be read by any user who can edit a REST API available post type. The `nav_menu` taxonomy and `nav_menu_item` post type now map their capabilities to the `edit_theme_options` primitive capability. This allows developers to provide more fine-grained access control. However, if a developer is currently dynamically removing the `edit_theme_options` capability using `map_meta_cap`, they should use the `user_has_cap` filter instead. The `wp_update_nav_menu_item()` function has been adjusted to return an error if saving the menu item post or assigning the menu item to a menu generate an error. Lastly, a new menu item type is introduced, `block`, that can be used to store a Block as a menu item. Props andraganescu, antonvlasenko, dingo_d, dlh, isabel_brison, kadamwhite, Mamaduka, NateWr, noisysocks, peterwilsoncc, ryelle, schlessera, soean, Spacedmonkey, talldanwp, TimothyBlynJacobs, tobifjellner, westonruter, wpscholar, zieladam. Fixes #40878. Built from https://develop.svn.wordpress.org/trunk@52079 git-svn-id: http://core.svn.wordpress.org/trunk@51671 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
@@ -108,17 +108,26 @@ function create_initial_taxonomies() {
|
||||
'nav_menu',
|
||||
'nav_menu_item',
|
||||
array(
|
||||
'public' => false,
|
||||
'hierarchical' => false,
|
||||
'labels' => array(
|
||||
'public' => false,
|
||||
'hierarchical' => false,
|
||||
'labels' => array(
|
||||
'name' => __( 'Navigation Menus' ),
|
||||
'singular_name' => __( 'Navigation Menu' ),
|
||||
),
|
||||
'query_var' => false,
|
||||
'rewrite' => false,
|
||||
'show_ui' => false,
|
||||
'_builtin' => true,
|
||||
'show_in_nav_menus' => false,
|
||||
'query_var' => false,
|
||||
'rewrite' => false,
|
||||
'show_ui' => false,
|
||||
'_builtin' => true,
|
||||
'show_in_nav_menus' => false,
|
||||
'capabilities' => array(
|
||||
'manage_terms' => 'edit_theme_options',
|
||||
'edit_terms' => 'edit_theme_options',
|
||||
'delete_terms' => 'edit_theme_options',
|
||||
'assign_terms' => 'edit_theme_options',
|
||||
),
|
||||
'show_in_rest' => true,
|
||||
'rest_base' => 'menus',
|
||||
'rest_controller_class' => 'WP_REST_Menus_Controller',
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user