Title: wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php | Developer.WordPress.org

---

# File: wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php

 * method[WP_REST_Widgets_Controller::retrieve_widgets()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/retrieve_widgets/)
 * Looks for “lost” widgets once per request.
 * Used by [6 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/retrieve_widgets/#used-by)
   | Uses [1 function](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/retrieve_widgets/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:507](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L507-L512)
 * method[WP_REST_Widgets_Controller::check_read_sidebar_permission()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/check_read_sidebar_permission/)
 * Checks if a sidebar can be read publicly.
 * Used by [3 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/check_read_sidebar_permission/#used-by)
   | Uses [1 function](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/check_read_sidebar_permission/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:199](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L199-L203)
 * hook[rest_after_save_widget](https://developer.wordpress.org/reference/hooks/rest_after_save_widget/)
 * Fires after a widget is created or updated via the REST API.
 * Used by [1 function](https://developer.wordpress.org/reference/hooks/rest_after_save_widget/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/hooks/rest_after_save_widget/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:654](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L654-L654)
 * method[WP_REST_Widgets_Controller::prepare_item_for_response()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/prepare_item_for_response/)
 * Prepares the widget for the REST response.
 * Used by [5 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/prepare_item_for_response/#used-by)
   | Uses [11 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/prepare_item_for_response/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:671](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L671-L754)
 * hook[rest_prepare_widget](https://developer.wordpress.org/reference/hooks/rest_prepare_widget/)
 * Filters the REST API response for a widget.
 * Used by [1 function](https://developer.wordpress.org/reference/hooks/rest_prepare_widget/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/hooks/rest_prepare_widget/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:753](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L753-L753)
 * method[WP_REST_Widgets_Controller::prepare_links()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/prepare_links/)
 * Prepares links for the widget.
 * Used by [1 function](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/prepare_links/#used-by)
   | Uses [1 function](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/prepare_links/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:764](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L764-L782)
 * method[WP_REST_Widgets_Controller::get_collection_params()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_collection_params/)
 * Gets the list of collection params.
 * Used by [1 function](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_collection_params/#used-by)
   | Uses [1 function](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_collection_params/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:791](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L791-L799)
 * method[WP_REST_Widgets_Controller::get_item_schema()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_item_schema/)
 * Retrieves the widget’s schema, conforming to JSON Schema.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_item_schema/#used-by)
   | Uses [2 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_item_schema/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:808](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L808-L886)
 * method[WP_REST_Widgets_Controller::register_routes()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/register_routes/)
 * Registers the widget routes for the controller.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/register_routes/#used-by)
   | Uses [3 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/register_routes/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:50](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L50-L105)
 * hook[rest_delete_widget](https://developer.wordpress.org/reference/hooks/rest_delete_widget/)
 * Fires after a widget is deleted via the REST API.
 * Used by [1 function](https://developer.wordpress.org/reference/hooks/rest_delete_widget/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/hooks/rest_delete_widget/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:473](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L473-L473)
 * method[WP_REST_Widgets_Controller::get_items_permissions_check()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_items_permissions_check/)
 * Checks if a given request has access to get widgets.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_items_permissions_check/#used-by)
   | Uses [4 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_items_permissions_check/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:115](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L115-L128)
 * method[WP_REST_Widgets_Controller::permissions_check()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/permissions_check/)
 * Performs a permissions check for managing widgets.
 * Used by [6 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/permissions_check/#used-by)
   | Uses [4 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/permissions_check/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:486](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L486-L498)
 * method[WP_REST_Widgets_Controller::get_items()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_items/)
 * Retrieves a collection of widgets.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_items/#used-by)
   | Uses [6 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_items/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:138](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L138-L168)
 * method[WP_REST_Widgets_Controller::save_widget()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/save_widget/)
 * Saves the widget in the request object.
 * Used by [2 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/save_widget/#used-by)
   | Uses [8 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/save_widget/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:526](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L526-L657)
 * method[WP_REST_Widgets_Controller::get_item_permissions_check()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_item_permissions_check/)
 * Checks if a given request has access to get a widget.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_item_permissions_check/#used-by)
   | Uses [4 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_item_permissions_check/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:178](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L178-L189)
 * method[WP_REST_Widgets_Controller::get_item()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_item/)
 * Gets an individual widget.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_item/#used-by)
   | Uses [5 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/get_item/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:213](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L213-L228)
 * method[WP_REST_Widgets_Controller::create_item_permissions_check()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/create_item_permissions_check/)
 * Checks if a given request has access to create widgets.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/create_item_permissions_check/#used-by)
   | Uses [1 function](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/create_item_permissions_check/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:238](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L238-L240)
 * method[WP_REST_Widgets_Controller::create_item()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/create_item/)
 * Creates a widget.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/create_item/#used-by)
   | Uses [4 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/create_item/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:250](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L250-L272)
 * method[WP_REST_Widgets_Controller::update_item_permissions_check()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/update_item_permissions_check/)
 * Checks if a given request has access to update widgets.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/update_item_permissions_check/#used-by)
   | Uses [1 function](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/update_item_permissions_check/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:282](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L282-L284)
 * method[WP_REST_Widgets_Controller::update_item()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/update_item/)
 * Updates an existing widget.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/update_item/#used-by)
   | Uses [11 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/update_item/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:296](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L296-L346)
 * method[WP_REST_Widgets_Controller::delete_item_permissions_check()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/delete_item_permissions_check/)
 * Checks if a given request has access to delete widgets.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/delete_item_permissions_check/#used-by)
   | Uses [1 function](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/delete_item_permissions_check/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:356](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L356-L358)
 * method[WP_REST_Widgets_Controller::__construct()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/__construct/)
 * Widgets controller constructor.
 * Used by [1 function](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/__construct/#used-by)
   | Uses [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/__construct/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:40](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L40-L43)
 * method[WP_REST_Widgets_Controller::delete_item()](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/delete_item/)
 * Deletes a widget.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/delete_item/#used-by)
   | Uses [10 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/delete_item/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:371](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L371-L476)
 * class[WP_REST_Widgets_Controller](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/)
 * Core class to access widgets via the REST API.
 * Used by [0 functions](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/#used-by)
   | Uses [1 function](https://developer.wordpress.org/reference/classes/wp_rest_widgets_controller/#uses)
   | Source: [wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php:17](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php#L17-L887)