# rest_get_endpoint_args_for_schema()

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

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

## Сигнатура

```php
rest_get_endpoint_args_for_schema( array $schema, string $method = WP_REST_Server::CREATABLE ): array
```

## Описание

Возвращает массив аргументов конечной точки на основе схемы элемента и метода конечной точки.

## Параметры

- `$schema` `array` — обязательный. Полная JSON-схема конечной точки.
- `$method` `string` — необязательный, по умолчанию `WP_REST_Server::CREATABLE`. HTTP-метод конечной точки. Для конечных точек CREATABLE аргументы проверяются на обязательные значения и могут использовать заданное значение по умолчанию; для конечных точек EDITABLE это не выполняется.

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

`array`

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

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

```php
function rest_get_endpoint_args_for_schema( $schema, $method = WP_REST_Server::CREATABLE ) {

	$schema_properties       = ! empty( $schema['properties'] ) ? $schema['properties'] : array();
	$endpoint_args           = array();
	$valid_schema_properties = rest_get_allowed_schema_keywords();
	$valid_schema_properties = array_diff( $valid_schema_properties, array( 'default', 'required' ) );

	foreach ( $schema_properties as $field_id => $params ) {

		// Arguments specified as `readonly` are not allowed to be set.
		if ( ! empty( $params['readonly'] ) ) {
			continue;
		}

		$endpoint_args[ $field_id ] = array(
			'validate_callback' => 'rest_validate_request_arg',
			'sanitize_callback' => 'rest_sanitize_request_arg',
		);

		if ( WP_REST_Server::CREATABLE === $method && isset( $params['default'] ) ) {
			$endpoint_args[ $field_id ]['default'] = $params['default'];
		}

		if ( WP_REST_Server::CREATABLE === $method && ! empty( $params['required'] ) ) {
			$endpoint_args[ $field_id ]['required'] = true;
		}

		foreach ( $valid_schema_properties as $schema_prop ) {
			if ( isset( $params[ $schema_prop ] ) ) {
				$endpoint_args[ $field_id ][ $schema_prop ] = $params[ $schema_prop ];
			}
		}

		// Merge in any options provided by the schema property.
		if ( isset( $params['arg_options'] ) ) {

			// Only use required / default from arg_options on CREATABLE endpoints.
			if ( WP_REST_Server::CREATABLE !== $method ) {
				$params['arg_options'] = array_diff_key(
					$params['arg_options'],
					array(
						'required' => '',
						'default'  => '',
					)
				);
			}

			$endpoint_args[ $field_id ] = array_merge( $endpoint_args[ $field_id ], $params['arg_options'] );
		}
	}

	return $endpoint_args;
}
```

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

- 5.6.0 — Introduced.

## Связанные

Использует: [`rest_get_allowed_schema_keywords`](https://chugunov.pro/api-wordpress/functions/rest_get_allowed_schema_keywords/).
Используется в: `WP_REST_Controller::get_endpoint_args_for_item_schema`.

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