rest_pre_echo_responseхук-фильтрWP 4.8.1

Позволяет изменить данные ответа REST API перед отправкой ответа клиенту.

Этот фильтр срабатывает в самом конце обработки REST-запроса. Дает возможность изменить финальный массив данных перед его сериализацией в JSON и отправкой клиенту.

Полезен для добавления, удаления или изменения полей ответа, а также для внедрения логики фильтрации или кэширования.

Это последний шанс изменить данные перед отправкой клиенту.

Хук вызывается в методе WP_REST_Server::serve_request() после подготовки данных ответа и перед их выводом.

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

add_filter( 'rest_pre_echo_response', 'wp_kama_rest_pre_echo_response_filter', 10, 3 );

/**
 * Function for `rest_pre_echo_response` filter-hook.
 * 
 * @param array           $result  Response data to send to the client.
 * @param WP_REST_Server  $server  Server instance.
 * @param WP_REST_Request $request Request used to generate the response.
 *
 * @return array
 */
function wp_kama_rest_pre_echo_response_filter( $result, $server, $request ){

	// filter...
	return $result;
}
$result(array)
Массив данных ответа, который будет сериализован и отправлен клиенту.
$server(WP_REST_Server)
Экземпляр сервера REST API, обрабатывающий запрос.
$request(WP_REST_Request)
Объект запроса, использованный для генерации ответа.

Примеры

0

#1 Добавление пользовательского сообщения в ответ

Добавим дополнительное поле "custom_message" в данные ответа.

add_filter( 'rest_pre_echo_response', function( $result, $server, $request ) {
	$result['custom_message'] = 'Данные были успешно обработаны.';
	return $result;
}, 10, 3 );
0

#2 Обработка ошибок в ответе

Преобразуем объект ошибки в структурированный массив с кодом и сообщением.

add_filter( 'rest_pre_echo_response', function( $result, $server, $request ) {
	if ( is_wp_error( $result ) ) {
		return [
			'error'   => true,
			'code'    => $result->get_error_code(),
			'message' => $result->get_error_message(),
		];
	}
	return $result;
}, 10, 3 );
0

#3 Кэширование ответа REST API

Сохраним данные ответа в кэше для последующего использования.

add_filter( 'rest_pre_echo_response', function( $result, $server, $request ) {
	$cache_key = 'rest_response_' . md5( $request->get_route() . serialize( $request->get_params() ) );
	set_transient( $cache_key, $result, HOUR_IN_SECONDS );

	return $result;
}, 10, 3 );

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

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

Где вызывается хук

WP_REST_Server::serve_request()
rest_pre_echo_response
wp-includes/rest-api/class-wp-rest-server.php 533
$result = apply_filters( 'rest_pre_echo_response', $result, $this, $request );

Где используется хук в WordPress

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