# _wp_connectors_rest_settings_dispatch()

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

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

## Сигнатура

```php
_wp_connectors_rest_settings_dispatch( WP_REST_Response $response, WP_REST_Server $server, WP_REST_Request $request ): WP_REST_Response
```

## Описание

При каждом ответе /wp/v2/settings маскирует значения ключей API коннекторов, чтобы исходные ключи никогда не раскрывались через REST API.
При запросах POST или PUT перед маскировкой проверяет каждый обновлённый ключ у поставщика. Если проверка не пройдена, ключ сбрасывается в пустую строку.

## Параметры

- `$response` `WP_REST_Response` — обязательный. Объект ответа.
- `$server` `WP_REST_Server` — обязательный. Экземпляр сервера.
- `$request` `WP_REST_Request` — обязательный. Объект запроса.

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

`WP_REST_Response`

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

Файл: `wp-includes/connectors.php:522`

```php
function _wp_connectors_rest_settings_dispatch( WP_REST_Response $response, WP_REST_Server $server, WP_REST_Request $request ): WP_REST_Response {
	if ( '/wp/v2/settings' !== $request->get_route() ) {
		return $response;
	}

	$data = $response->get_data();
	if ( ! is_array( $data ) ) {
		return $response;
	}

	$is_update = 'POST' === $request->get_method() || 'PUT' === $request->get_method();

	foreach ( wp_get_connectors() as $connector_id => $connector_data ) {
		$auth = $connector_data['authentication'];
		if ( 'api_key' !== $auth['method'] || empty( $auth['setting_name'] ) ) {
			continue;
		}

		$setting_name = $auth['setting_name'];
		if ( ! array_key_exists( $setting_name, $data ) ) {
			continue;
		}

		$value = $data[ $setting_name ];

		// On update, validate AI provider keys before masking.
		// Non-AI connectors accept keys as-is; the service plugin handles its own validation.
		if ( $is_update && is_string( $value ) && '' !== $value && 'ai_provider' === $connector_data['type'] ) {
			if ( true !== _wp_connectors_is_ai_api_key_valid( $value, $connector_id ) ) {
				update_option( $setting_name, '' );
				$data[ $setting_name ] = '';
				continue;
			}
		}

		// Mask the key in the response.
		if ( is_string( $value ) && '' !== $value ) {
			$data[ $setting_name ] = _wp_connectors_mask_api_key( $value );
		}
	}

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

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

- 7.0.0 — Introduced.

## Связанные

Использует: [`_wp_connectors_is_ai_api_key_valid`](https://chugunov.pro/api-wordpress/functions/_wp_connectors_is_ai_api_key_valid/), [`_wp_connectors_mask_api_key`](https://chugunov.pro/api-wordpress/functions/_wp_connectors_mask_api_key/), [`wp_get_connectors`](https://chugunov.pro/api-wordpress/functions/wp_get_connectors/), [`update_option`](https://chugunov.pro/api-wordpress/functions/update_option/).

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