wpseek.com
A WordPress-centric search engine for devs and theme authors
create_initial_rest_routes › WordPress Function
Since4.7.0
Deprecatedn/a
› create_initial_rest_routes ( No parameters )
Defined at: |
|
Codex: |
Registers default REST API routes.
Source
function create_initial_rest_routes() { global $wp_post_types; // Register the registered templates endpoint. For that we need to copy the // wp_template post type so that it's available as an entity in core-data. $wp_post_types['wp_registered_template'] = clone $wp_post_types['wp_template']; $wp_post_types['wp_registered_template']->name = 'wp_registered_template'; $wp_post_types['wp_registered_template']->rest_base = 'wp_registered_template'; $wp_post_types['wp_registered_template']->rest_controller_class = 'WP_REST_Registered_Templates_Controller'; foreach ( get_post_types( array( 'show_in_rest' => true ), 'objects' ) as $post_type ) { $controller = $post_type->get_rest_controller(); if ( ! $controller ) { continue; } if ( ! $post_type->late_route_registration ) { $controller->register_routes(); } $revisions_controller = $post_type->get_revisions_rest_controller(); if ( $revisions_controller ) { $revisions_controller->register_routes(); } $autosaves_controller = $post_type->get_autosave_rest_controller(); if ( $autosaves_controller ) { $autosaves_controller->register_routes(); } if ( $post_type->late_route_registration ) { $controller->register_routes(); } } // Register the old templates endpoints. The WP_REST_Templates_Controller // and sub-controllers used linked to the wp_template post type, but are no // longer. They still require a post type object when contructing the class. // To maintain backward and changes to these controller classes, we make use // that the wp_template post type has the right information it needs. $wp_post_types['wp_template']->rest_base = 'templates'; // Store the classes so they can be restored. $original_rest_controller_class = $wp_post_types['wp_template']->rest_controller_class; $original_autosave_rest_controller_class = $wp_post_types['wp_template']->autosave_rest_controller_class; $original_revisions_rest_controller_class = $wp_post_types['wp_template']->revisions_rest_controller_class; // Temporarily set the old classes. $wp_post_types['wp_template']->rest_controller_class = 'WP_REST_Templates_Controller'; $wp_post_types['wp_template']->autosave_rest_controller_class = 'WP_REST_Template_Autosaves_Controller'; $wp_post_types['wp_template']->revisions_rest_controller_class = 'WP_REST_Template_Revisions_Controller'; // Initialize the controllers. The order is important: the autosave // controller needs both the templates and revisions controllers. $controller = new WP_REST_Templates_Controller( 'wp_template' ); $wp_post_types['wp_template']->rest_controller = $controller; $revisions_controller = new WP_REST_Template_Revisions_Controller( 'wp_template' ); $wp_post_types['wp_template']->revisions_rest_controller = $revisions_controller; $autosaves_controller = new WP_REST_Template_Autosaves_Controller( 'wp_template' ); // Unset the controller cache, it will be re-initialized when // get_rest_controller is called. $wp_post_types['wp_template']->rest_controller = null; $wp_post_types['wp_template']->revisions_rest_controller = null; // Restore the original classes. $wp_post_types['wp_template']->rest_controller_class = $original_rest_controller_class; $wp_post_types['wp_template']->autosave_rest_controller_class = $original_autosave_rest_controller_class; $wp_post_types['wp_template']->revisions_rest_controller_class = $original_revisions_rest_controller_class; // Restore the original base. $wp_post_types['wp_template']->rest_base = 'wp_template'; // Register the old routes. $autosaves_controller->register_routes(); $revisions_controller->register_routes(); $controller->register_routes(); register_rest_field( 'wp_template', 'theme', array( 'get_callback' => function ( $post_arr ) { // add_additional_fields_to_object is also called for the old // templates controller, so we need to check if the id is an // integer to make sure it's the proper post type endpoint. if ( ! is_int( $post_arr['id'] ) ) { $template = get_block_template( $post_arr['id'], 'wp_template' ); return $template ? $template->theme : null; } $terms = get_the_terms( $post_arr['id'], 'wp_theme' ); if ( is_wp_error( $terms ) || empty( $terms ) ) { return null; } return $terms[0]->slug; }, ) ); // Post types. $controller = new WP_REST_Post_Types_Controller(); $controller->register_routes(); // Post statuses. $controller = new WP_REST_Post_Statuses_Controller(); $controller->register_routes(); // Taxonomies. $controller = new WP_REST_Taxonomies_Controller(); $controller->register_routes(); // Terms. foreach ( get_taxonomies( array( 'show_in_rest' => true ), 'object' ) as $taxonomy ) { $controller = $taxonomy->get_rest_controller(); if ( ! $controller ) { continue; } $controller->register_routes(); } // Users. $controller = new WP_REST_Users_Controller(); $controller->register_routes(); // Application Passwords $controller = new WP_REST_Application_Passwords_Controller(); $controller->register_routes(); // Comments. $controller = new WP_REST_Comments_Controller(); $controller->register_routes(); $search_handlers = array( new WP_REST_Post_Search_Handler(), new WP_REST_Term_Search_Handler(), new WP_REST_Post_Format_Search_Handler(), ); /** * Filters the search handlers to use in the REST search controller. * * @since 5.0.0 * * @param array $search_handlers List of search handlers to use in the controller. Each search * handler instance must extend the `WP_REST_Search_Handler` class. * Default is only a handler for posts. */ $search_handlers = apply_filters( 'wp_rest_search_handlers', $search_handlers ); $controller = new WP_REST_Search_Controller( $search_handlers ); $controller->register_routes(); // Block Renderer. $controller = new WP_REST_Block_Renderer_Controller(); $controller->register_routes(); // Block Types. $controller = new WP_REST_Block_Types_Controller(); $controller->register_routes(); // Settings. $controller = new WP_REST_Settings_Controller(); $controller->register_routes(); // Themes. $controller = new WP_REST_Themes_Controller(); $controller->register_routes(); // Plugins. $controller = new WP_REST_Plugins_Controller(); $controller->register_routes(); // Sidebars. $controller = new WP_REST_Sidebars_Controller(); $controller->register_routes(); // Widget Types. $controller = new WP_REST_Widget_Types_Controller(); $controller->register_routes(); // Widgets. $controller = new WP_REST_Widgets_Controller(); $controller->register_routes(); // Block Directory. $controller = new WP_REST_Block_Directory_Controller(); $controller->register_routes(); // Pattern Directory. $controller = new WP_REST_Pattern_Directory_Controller(); $controller->register_routes(); // Block Patterns. $controller = new WP_REST_Block_Patterns_Controller(); $controller->register_routes(); // Block Pattern Categories. $controller = new WP_REST_Block_Pattern_Categories_Controller(); $controller->register_routes(); // Site Health. $site_health = WP_Site_Health::get_instance(); $controller = new WP_REST_Site_Health_Controller( $site_health ); $controller->register_routes(); // URL Details. $controller = new WP_REST_URL_Details_Controller(); $controller->register_routes(); // Menu Locations. $controller = new WP_REST_Menu_Locations_Controller(); $controller->register_routes(); // Site Editor Export. $controller = new WP_REST_Edit_Site_Export_Controller(); $controller->register_routes(); // Navigation Fallback. $controller = new WP_REST_Navigation_Fallback_Controller(); $controller->register_routes(); // Font Collections. $font_collections_controller = new WP_REST_Font_Collections_Controller(); $font_collections_controller->register_routes(); // Abilities. $abilities_run_controller = new WP_REST_Abilities_V1_Run_Controller(); $abilities_run_controller->register_routes(); $abilities_list_controller = new WP_REST_Abilities_V1_List_Controller(); $abilities_list_controller->register_routes(); }