# rest_ensure_response()

URL: https://chugunov.pro/api-wordpress/functions/rest_ensure_response/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 4.4.0.

## Сигнатура

```php
rest_ensure_response( WP_REST_Response|WP_Error|WP_HTTP_Response|mixed $response ): WP_REST_Response|WP_Error
```

## Описание

Реализует WP_REST_Response, что позволяет использовать set_status/header и подобные методы без дополнительной проверки объекта. Также допускает WP_Error для обозначения ответов с ошибкой, поэтому это значение следует проверять сразу.

## Параметры

- `$response` `WP_REST_Response|WP_Error|WP_HTTP_Response|mixed` — обязательный. Ответ для проверки.

## Возвращаемое значение

`WP_REST_Response|WP_Error` — WP_Error WP_REST_Response WP_REST_Response

## Исходный код

Файл: `wp-includes/rest-api.php:681`

```php
function rest_ensure_response( $response ) {
	if ( is_wp_error( $response ) ) {
		return $response;
	}

	if ( $response instanceof WP_REST_Response ) {
		return $response;
	}

	/*
	 * While WP_HTTP_Response is the base class of WP_REST_Response, it doesn't provide
	 * all the required methods used in WP_REST_Server::dispatch().
	 */
	if ( $response instanceof WP_HTTP_Response ) {
		return new WP_REST_Response(
			$response->get_data(),
			$response->get_status(),
			$response->get_headers()
		);
	}

	return new WP_REST_Response( $response );
}
```

## История изменений

- 4.4.0 — Introduced.

## Связанные

Использует: [`is_wp_error`](https://chugunov.pro/api-wordpress/functions/is_wp_error/).
Используется в: `WP_REST_Icons_Controller::get_items`, `WP_REST_Icons_Controller::get_item`, `WP_REST_Icons_Controller::prepare_item_for_response`, `WP_REST_Abilities_V1_Categories_Controller::get_items`, `WP_REST_Abilities_V1_Categories_Controller::get_item`, `WP_REST_Abilities_V1_Categories_Controller::prepare_item_for_response`, `WP_REST_Abilities_V1_Run_Controller::execute_ability`, `WP_REST_Abilities_V1_List_Controller::get_items`, `WP_REST_Abilities_V1_List_Controller::get_item`, `WP_REST_Abilities_V1_List_Controller::prepare_item_for_response`, `WP_REST_Font_Faces_Controller::prepare_item_for_response`, `WP_REST_Font_Families_Controller::prepare_item_for_response`, `WP_REST_Font_Collections_Controller::prepare_item_for_response`, `WP_REST_Font_Collections_Controller::get_items`, `WP_REST_Navigation_Fallback_Controller::get_item`, `WP_REST_Navigation_Fallback_Controller::prepare_item_for_response`, `WP_REST_Global_Styles_Revisions_Controller::get_items`, `WP_REST_Global_Styles_Revisions_Controller::prepare_item_for_response`, `WP_REST_Templates_Controller::get_template_fallback`, `WP_REST_Block_Patterns_Controller::get_items`, `WP_REST_Block_Patterns_Controller::prepare_item_for_response`, `WP_REST_Global_Styles_Controller::get_theme_items`, `WP_REST_Block_Pattern_Categories_Controller::get_items`, `WP_REST_Block_Pattern_Categories_Controller::prepare_item_for_response`, `WP_REST_Menu_Items_Controller::prepare_item_for_response`, `WP_REST_Global_Styles_Controller::get_theme_item`, `WP_REST_Menu_Items_Controller::create_item`, `WP_REST_Menu_Items_Controller::update_item`, `WP_REST_Global_Styles_Controller::prepare_item_for_response`, `WP_REST_URL_Details_Controller::parse_url_details`, `WP_REST_Menus_Controller::prepare_item_for_response`, `WP_REST_Menus_Controller::create_item`, `WP_REST_Menus_Controller::update_item`, `WP_REST_Menu_Locations_Controller::get_items`, `WP_REST_Menu_Locations_Controller::get_item`, `WP_REST_Menu_Locations_Controller::prepare_item_for_response`, `WP_REST_Widgets_Controller::prepare_item_for_response`, `WP_REST_Sidebars_Controller::get_items`, `WP_REST_Sidebars_Controller::prepare_item_for_response`, `WP_REST_Templates_Controller::prepare_item_for_response`.

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/rest_ensure_response/
