# WP_REST_POSTS_CONTROLLER::GET_ITEM_SCHEMA() │ ПУБЛИЧНЫЙ │ WP 4.7.0
Метод GET_ITEM_SCHEMA() получает схему поста, которая соответствует стандарту JSON Schema.
### Описание метода
Метод принадлежит классу WP_REST_Posts_Controller.
### Хуки из метода
- rest_(post_type)_item_schema
- rest_post_item_schema
- rest_page_item_schema
- rest_attachment_item_schema
### Возврат
Метод возвращает массив с данными схемы элемента.
### Использование
Ниже приведен пример использования метода:
```php
$WP_REST_Posts_Controller = new WP_REST_Posts_Controller();
$schema = $WP_REST_Posts_Controller->get_item_schema();
Примеры
Ниже приведен пример из ядра WordPress, который использует метод prepare_item_for_database класса WP_REST_Menus_Controller.
/**
* Подготавливает отдельный термин для создания или обновления.
*
* @since 5.9.0
*
* @param WP_REST_Request $request Объект запроса.
* @return object Подготовленные данные термина.
*/
public function prepare_item_for_database( $request ) {
$prepared_term = parent::prepare_item_for_database( $request );
$schema = $this->get_item_schema();
if ( isset( $request['name'] ) && ! empty( $schema['properties']['name'] ) ) {
$prepared_term->{'menu-name'} = $request['name'];
}
return $prepared_term;
}
Изменения
- Метод был введен в версии 4.7.0.
Код метода get_item_schema()
Ниже представлен важный код из файла class-wp-rest-posts-controller.php:
public function get_item_schema() {
if ( $this->schema ) {
return $this->add_additional_fields_schema( $this->schema );
}
$schema = array(
'$schema' => 'http://json-schema.org/draft-04/schema#',
'title' => $this->post_type,
'type' => 'object',
'properties' => array(
'date' => array(
'description' => __( "Дата публикации поста в часовом поясе сайта." ),
'type' => array( 'string', 'null' ),
'format' => 'date-time',
'context' => array( 'view', 'edit', 'embed' ),
),
'date_gmt' => array(
'description' => __( 'Дата публикации поста в GMT.' ),
'type' => array( 'string', 'null' ),
'format' => 'date-time',
'context' => array( 'view', 'edit' ),
),
'guid' => array(
'description' => __( 'Глобально уникальный идентификатор поста.' ),
'type' => 'object',
'context' => array( 'view', 'edit' ),
'readonly' => true,
'properties' => array(
'raw' => array(
'description' => __( 'GUID поста, как он хранился в базе дан��ых.' ),
'type' => 'string',
'context' => array( 'edit' ),
'readonly' => true,
),
'rendered' => array(
'description' => __( 'GUID поста, преобразованный для отображения.' ),
'type' => 'string',
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
),
),
'id' => array(
'description' => __( 'Уникальный идентификатор поста.' ),
'type' => 'integer',
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'link' => array(
'description' => __( 'URL на пост.' ),
'type' => 'string',
'format' => 'uri',
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'modified' => array(
'description' => __( "Дата последнего изменения поста в часовом поясе сайта." ),
'type' => 'string',
'format' => 'date-time',
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
'modified_gmt' => array(
'description' => __( 'Дата последнего изменения поста в GMT.' ),
'type' => 'string',
'format' => 'date-time',
'context' => array( 'view', 'edit' ),
'readonly' => true,
),
'slug' => array(
'description' => __( 'Алфавитно-цифровой идентификатор поста, уникальный для его типа.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
),
'status' => array(
'description' => __( 'Название статуса поста.' ),
'type' => 'string',
'enum' => array_keys( get_post_stati( array( 'internal' => false ) ) ),
'context' => array( 'view', 'edit' ),
),
'type' => array(
'description' => __( 'Тип поста.' ),
'type' => 'string',
'context' => array( 'view', 'edit', 'embed' ),
'readonly' => true,
),
'password' => array(
'description' => __( 'Пароль для защиты доступа к контенту и отрывку.' ),
'type' => 'string',
'context' => array( 'edit' ),
),
),
);
// Здесь можно добавить дополнительные свойства для конкретного типа поста
return $this->add_additional_fields_schema( $schema );
}
Заметка
Если вы хотите добавить новые свойства в схему, используйте register_rest_field.
Этот метод предоставляет разработчикам мощный инструмент для работы с постами через REST API WordPress. Он описывает, какие поля доступны и как с ними можно работать.