diff -r 48c4eec2b7e6 -r 8c2e4d02f4ef wp/wp-includes/rest-api/endpoints/class-wp-rest-menus-controller.php --- a/wp/wp-includes/rest-api/endpoints/class-wp-rest-menus-controller.php Fri Sep 05 18:40:08 2025 +0200 +++ b/wp/wp-includes/rest-api/endpoints/class-wp-rest-menus-controller.php Fri Sep 05 18:52:52 2025 +0200 @@ -84,6 +84,12 @@ * @return true|WP_Error True if the current user has permission, WP_Error object otherwise. */ protected function check_has_read_only_access( $request ) { + /** This filter is documented in wp-includes/rest-api/endpoints/class-wp-rest-menu-items-controller.php */ + $read_only_access = apply_filters( 'rest_menu_read_access', false, $request, $this ); + if ( $read_only_access ) { + return true; + } + if ( current_user_can( 'edit_theme_options' ) ) { return true; }