WP_REST_Sidebars_Controller::update_item()publicWP 5.8.0

Updates a sidebar.

Метод класса: WP_REST_Sidebars_Controller{}

Хуки из метода

Возвращает

WP_REST_Response. Response object on success, or WP_Error object on failure.

Использование

$WP_REST_Sidebars_Controller = new WP_REST_Sidebars_Controller();
$WP_REST_Sidebars_Controller->update_item( $request );
$request(WP_REST_Request) (обязательный)
Full details about the request.

Список изменений

С версии 5.8.0 Введена.

Код WP_REST_Sidebars_Controller::update_item() WP 6.4.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 );
}