# _oembed_rest_pre_serve_request()

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

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

## Сигнатура

```php
_oembed_rest_pre_serve_request( bool $served, WP_HTTP_Response $result, WP_REST_Request $request, WP_REST_Server $server ): bool
```

## Описание

Это делается только для конечной точки API oEmbed, которая поддерживает оба формата.

## Параметры

- `$served` `bool` — обязательный. Был ли запрос уже обработан.
- `$result` `WP_HTTP_Response` — обязательный. Результат, отправляемый клиенту. Обычно это WP_REST_Response.
- `$request` `WP_REST_Request` — обязательный. Запрос, использованный для формирования ответа.
- `$server` `WP_REST_Server` — обязательный. Экземпляр сервера.

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

`bool`

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

Файл: `wp-includes/embed.php:782`

```php
function _oembed_rest_pre_serve_request( $served, $result, $request, $server ) {
	$params = $request->get_params();

	if ( '/oembed/1.0/embed' !== $request->get_route() || 'GET' !== $request->get_method() ) {
		return $served;
	}

	if ( ! isset( $params['format'] ) || 'xml' !== $params['format'] ) {
		return $served;
	}

	// Embed links inside the request.
	$data = $server->response_to_data( $result, false );

	if ( ! class_exists( 'SimpleXMLElement' ) ) {
		status_header( 501 );
		die( get_status_header_desc( 501 ) );
	}

	$result = _oembed_create_xml( $data );

	// Bail if there's no XML.
	if ( ! $result ) {
		status_header( 501 );
		die( get_status_header_desc( 501 ) );
	}

	if ( ! headers_sent() ) {
		$server->send_header( 'Content-Type', 'text/xml; charset=' . get_option( 'blog_charset' ) );
	}

	echo $result;

	return true;
}
```

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

- 4.4.0 — Introduced.

## Связанные

Использует: [`_oembed_create_xml`](https://chugunov.pro/api-wordpress/functions/_oembed_create_xml/), [`status_header`](https://chugunov.pro/api-wordpress/functions/status_header/), [`get_status_header_desc`](https://chugunov.pro/api-wordpress/functions/get_status_header_desc/), [`get_option`](https://chugunov.pro/api-wordpress/functions/get_option/).

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