Title: WP_REST_Sidebars_Controller::prepare_item_for_response
Published: July 20, 2021
Last modified: May 20, 2026

---

# WP_REST_Sidebars_Controller::prepare_item_for_response( array $item, WP_REST_Request $request ): 󠀁[WP_REST_Response](https://developer.wordpress.org/reference/classes/wp_rest_response/)󠁿

## In this article

 * [Parameters](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#parameters)
 * [Return](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#source)
 * [Hooks](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#hooks)
 * [Related](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#wp--skip-link--target)

Prepares a single sidebar output for response.

## 󠀁[Parameters](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#parameters)󠁿

 `$item`arrayrequired

Sidebar instance.

`$request`[WP_REST_Request](https://developer.wordpress.org/reference/classes/wp_rest_request/)
required

Full details about the request.

## 󠀁[Return](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#return)󠁿

 [WP_REST_Response](https://developer.wordpress.org/reference/classes/wp_rest_response/)
Prepared response object.

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#source)󠁿

    ```php
    public function prepare_item_for_response( $item, $request ) {
    	global $wp_registered_sidebars, $wp_registered_widgets;

    	// Restores the more descriptive, specific name for use within this method.
    	$raw_sidebar = $item;

    	// Don't prepare the response body for HEAD requests.
    	if ( $request->is_method( 'HEAD' ) ) {
    		/** This filter is documented in wp-includes/rest-api/endpoints/class-wp-rest-sidebars-controller.php */
    		return apply_filters( 'rest_prepare_sidebar', new WP_REST_Response( array() ), $raw_sidebar, $request );
    	}

    	$id      = $raw_sidebar['id'];
    	$sidebar = array( 'id' => $id );

    	if ( isset( $wp_registered_sidebars[ $id ] ) ) {
    		$registered_sidebar = $wp_registered_sidebars[ $id ];

    		$sidebar['status']        = 'active';
    		$sidebar['name']          = $registered_sidebar['name'] ?? '';
    		$sidebar['description']   = isset( $registered_sidebar['description'] ) ? wp_sidebar_description( $id ) : '';
    		$sidebar['class']         = $registered_sidebar['class'] ?? '';
    		$sidebar['before_widget'] = $registered_sidebar['before_widget'] ?? '';
    		$sidebar['after_widget']  = $registered_sidebar['after_widget'] ?? '';
    		$sidebar['before_title']  = $registered_sidebar['before_title'] ?? '';
    		$sidebar['after_title']   = $registered_sidebar['after_title'] ?? '';
    	} else {
    		$sidebar['status']      = 'inactive';
    		$sidebar['name']        = $raw_sidebar['name'];
    		$sidebar['description'] = '';
    		$sidebar['class']       = '';
    	}

    	if ( wp_is_block_theme() ) {
    		$sidebar['status'] = 'inactive';
    	}

    	$fields = $this->get_fields_for_response( $request );
    	if ( rest_is_field_included( 'widgets', $fields ) ) {
    		$sidebars = wp_get_sidebars_widgets();
    		$widgets  = array_filter(
    			$sidebars[ $sidebar['id'] ] ?? array(),
    			static function ( $widget_id ) use ( $wp_registered_widgets ) {
    				return isset( $wp_registered_widgets[ $widget_id ] );
    			}
    		);

    		$sidebar['widgets'] = array_values( $widgets );
    	}

    	$schema = $this->get_item_schema();
    	$data   = array();
    	foreach ( $schema['properties'] as $property_id => $property ) {
    		if ( isset( $sidebar[ $property_id ] ) && true === rest_validate_value_from_schema( $sidebar[ $property_id ], $property ) ) {
    			$data[ $property_id ] = $sidebar[ $property_id ];
    		} elseif ( isset( $property['default'] ) ) {
    			$data[ $property_id ] = $property['default'];
    		}
    	}

    	$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
    	$data    = $this->add_additional_fields_to_object( $data, $request );
    	$data    = $this->filter_response_by_context( $data, $context );

    	$response = rest_ensure_response( $data );

    	if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) {
    		$response->add_links( $this->prepare_links( $sidebar ) );
    	}

    	/**
    	 * Filters the REST API response for a sidebar.
    	 *
    	 * @since 5.8.0
    	 *
    	 * @param WP_REST_Response $response    The response object.
    	 * @param array            $raw_sidebar The raw sidebar data.
    	 * @param WP_REST_Request  $request     The request object.
    	 */
    	return apply_filters( 'rest_prepare_sidebar', $response, $raw_sidebar, $request );
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/rest-api/endpoints/class-wp-rest-sidebars-controller.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-sidebars-controller.php#L323)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-includes/rest-api/endpoints/class-wp-rest-sidebars-controller.php#L323-L403)

## 󠀁[Hooks](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#hooks)󠁿

 [apply_filters( ‘rest_prepare_sidebar’, WP_REST_Response $response, array $raw_sidebar, WP_REST_Request $request )](https://developer.wordpress.org/reference/hooks/rest_prepare_sidebar/)

Filters the REST API response for a sidebar.

## 󠀁[Related](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#related)󠁿

| Uses | Description | 
| [wp_is_block_theme()](https://developer.wordpress.org/reference/functions/wp_is_block_theme/)`wp-includes/theme.php` |

Returns whether the active theme is a block-based theme or not.

  | 
| [WP_REST_Sidebars_Controller::get_item_schema()](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/get_item_schema/)`wp-includes/rest-api/endpoints/class-wp-rest-sidebars-controller.php` |

Retrieves the block type’ schema, conforming to JSON Schema.

  | 
| [WP_REST_Sidebars_Controller::prepare_links()](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_links/)`wp-includes/rest-api/endpoints/class-wp-rest-sidebars-controller.php` |

Prepares links for the sidebar.

  | 
| [rest_is_field_included()](https://developer.wordpress.org/reference/functions/rest_is_field_included/)`wp-includes/rest-api.php` |

Given an array of fields to include in a response, some of which may be `nested.fields`, determine whether the provided field should be included in the response body.

  | 
| [rest_validate_value_from_schema()](https://developer.wordpress.org/reference/functions/rest_validate_value_from_schema/)`wp-includes/rest-api.php` |

Validate a value based on a schema.

  | 
| [wp_get_sidebars_widgets()](https://developer.wordpress.org/reference/functions/wp_get_sidebars_widgets/)`wp-includes/widgets.php` |

Retrieves the full list of sidebars and their widget instance IDs.

  | 
| [wp_sidebar_description()](https://developer.wordpress.org/reference/functions/wp_sidebar_description/)`wp-includes/widgets.php` |

Retrieves description for a sidebar.

  | 
| [rest_ensure_response()](https://developer.wordpress.org/reference/functions/rest_ensure_response/)`wp-includes/rest-api.php` |

Ensures a REST response is a response object (for consistency).

  | 
| [apply_filters()](https://developer.wordpress.org/reference/functions/apply_filters/)`wp-includes/plugin.php` |

Calls the callback functions that have been added to a filter hook.

  |

[Show 4 more](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#)

| Used by | Description | 
| [WP_REST_Sidebars_Controller::get_items()](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/get_items/)`wp-includes/rest-api/endpoints/class-wp-rest-sidebars-controller.php` |

Retrieves the list of sidebars (active or inactive).

  | 
| [WP_REST_Sidebars_Controller::get_item()](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/get_item/)`wp-includes/rest-api/endpoints/class-wp-rest-sidebars-controller.php` |

Retrieves one sidebar from the collection.

  | 
| [WP_REST_Sidebars_Controller::update_item()](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/update_item/)`wp-includes/rest-api/endpoints/class-wp-rest-sidebars-controller.php` |

Updates a sidebar.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/classes/wp_rest_sidebars_controller/prepare_item_for_response/?output_format=md#changelog)󠁿

| Version | Description | 
| [5.9.0](https://developer.wordpress.org/reference/since/5.9.0/) | Renamed `$raw_sidebar` to `$item` to match parent class for PHP 8 named parameter support. | 
| [5.8.0](https://developer.wordpress.org/reference/since/5.8.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_rest_sidebars_controller%2Fprepare_item_for_response%2F)
before being able to contribute a note or feedback.