# rest_handle_options_request()

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

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

## Сигнатура

```php
rest_handle_options_request( mixed $response, WP_REST_Server $handler, WP_REST_Request $request ): WP_REST_Response
```

## Описание

Это обрабатывается вне кода сервера, поскольку не подчиняется обычному сопоставлению маршрутов.

## Параметры

- `$response` `mixed` — обязательный. Текущий ответ: либо ответ, либо null для обозначения сквозной передачи.
- `$handler` `WP_REST_Server` — обязательный. Экземпляр ResponseHandler (обычно WP_REST_Server).
- `$request` `WP_REST_Request` — обязательный. Запрос, использованный для формирования текущего ответа.

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

`WP_REST_Response` — null

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

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

```php
function rest_handle_options_request( $response, $handler, $request ) {
	if ( ! empty( $response ) || $request->get_method() !== 'OPTIONS' ) {
		return $response;
	}

	$response = new WP_REST_Response();
	$data     = array();

	foreach ( $handler->get_routes() as $route => $endpoints ) {
		$match = preg_match( '@^' . $route . '$@i', $request->get_route(), $matches );

		if ( ! $match ) {
			continue;
		}

		$args = array();
		foreach ( $matches as $param => $value ) {
			if ( ! is_int( $param ) ) {
				$args[ $param ] = $value;
			}
		}

		foreach ( $endpoints as $endpoint ) {
			$request->set_url_params( $args );
			$request->set_attributes( $endpoint );
		}

		$data = $handler->get_data_for_route( $route, $endpoints, 'help' );
		$response->set_matched_route( $route );
		break;
	}

	$response->set_data( $data );
	return $response;
}
```

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

- 4.4.0 — Introduced.

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