WP_REST_Sidebars_Controller::update_item
Updates a sidebar.
Method of the class: WP_REST_Sidebars_Controller{}
Hooks from the method
Returns
WP_REST_Response. Response object on success, or WP_Error object on failure.
Usage
$WP_REST_Sidebars_Controller = new WP_REST_Sidebars_Controller(); $WP_REST_Sidebars_Controller->update_item( $request );
- $request(WP_REST_Request) (required)
- Full details about the request.
Changelog
| Since 5.8.0 | Introduced. |
WP_REST_Sidebars_Controller::update_item() WP REST Sidebars Controller::update item code WP 6.8.3
public function update_item( $request ) {
if ( isset( $request['widgets'] ) ) {
$sidebars = wp_get_sidebars_widgets();
foreach ( $sidebars as $sidebar_id => $widgets ) {
foreach ( $widgets as $i => $widget_id ) {
// This automatically removes the passed widget IDs from any other sidebars in use.
if ( $sidebar_id !== $request['id'] && in_array( $widget_id, $request['widgets'], true ) ) {
unset( $sidebars[ $sidebar_id ][ $i ] );
}
// This automatically removes omitted widget IDs to the inactive sidebar.
if ( $sidebar_id === $request['id'] && ! in_array( $widget_id, $request['widgets'], true ) ) {
$sidebars['wp_inactive_widgets'][] = $widget_id;
}
}
}
$sidebars[ $request['id'] ] = $request['widgets'];
wp_set_sidebars_widgets( $sidebars );
}
$request['context'] = 'edit';
$sidebar = $this->get_sidebar( $request['id'] );
/**
* Fires after a sidebar is updated via the REST API.
*
* @since 5.8.0
*
* @param array $sidebar The updated sidebar.
* @param WP_REST_Request $request Request object.
*/
do_action( 'rest_save_sidebar', $sidebar, $request );
return $this->prepare_item_for_response( $sidebar, $request );
}