Эти маршруты позволяют получить/создать/обновить/удалить комментарии.
Возможные маршруты (конечные точки маршрутов описаны ниже):
/wp/v2/comments // работает со всеми комментариями
/wp/v2/comments/{ID} // работает с указанным вместо {ID} комментарием
Класс контроллера: WP_REST_Comments_Controller{}
Схема ресурса
Схема показывает все поля, которые существуют для объекта: поля объекта которые вернет запрос.
Параметр
Контекст
Описание
id число
view, edit, embed
ID комментария. Только для чтения.
author число
view, edit, embed
Идентификатор (ID) автора комментария, если тот был авторизован.
author_email строка
edit
Адрес электронной почты автора комментария.
author_ip строка
edit
IP адрес автора комментария.
author_name строка
view, edit, embed
Отображаемое имя автора комментария.
author_url строка
view, edit, embed
Ссылка на сайт автора комментария.
author_user_agent строка
edit
Юзер-агент автора комментария.
content объект
view, edit, embed
Содержимое комментария.
date строка
view, edit, embed
Дата публикации комментария в часовом поясе сайта.
date_gmt строка/datetime
view, edit
Дата публикации комментария, как GMT.
link строка
view, edit, embed
Ссылка на комментарий. Только для чтения.
parent число
view, edit, embed
ID родительского комментария.
post число
view, edit
ID записи, к которой оставлен комментарий.
status строка
view, edit
Статус комментария (approve, spam и т.д.).
type строка
view, edit, embed
Тип комментария. Только для чтения.
author_avatar_urls объект
view, edit, embed
Ссылка на аватар автора комментария. Только для чтения.
meta объект
view, edit
Метаполя комментария.
Запрос OPTIONS к маршруту вернет полное описание этого маршрута: эндпоинты их параметры, схему.
$ curl -X OPTIONS -i http://demo.wp-api.org/wp-json/wp/v2/comments
GitHub
{
"namespace": "wp/v2",
"methods": [
"GET",
"POST"
],
"endpoints": [
{
"methods": [
"GET"
],
"args": {
"context": {
"required": false,
"default": "view",
"enum": [
"view",
"embed",
"edit"
],
"description": "Рамки в которых сделан запрос, определяют поля в ответе.",
"type": "string"
},
"page": {
"required": false,
"default": 1,
"description": "Текущая страница коллекции.",
"type": "integer"
},
"per_page": {
"required": false,
"default": 10,
"description": "Максимальное число объектов возвращаемое в выборке.",
"type": "integer"
},
"search": {
"required": false,
"description": "Ограничить результаты до совпадающих со строкой.",
"type": "string"
},
"after": {
"required": false,
"description": "Ограничить ответ комментариями опубликованными после заданной ISO8601 совместимой даты.",
"type": "string"
},
"author": {
"required": false,
"description": "Ограничить выборку комментариями назначенными определенному ID пользователя. Требует авторизации.",
"type": "array",
"items": {
"type": "integer"
}
},
"author_exclude": {
"required": false,
"description": "Убедиться что выборка исключает комментарии назначенные определенному ID пользователя. Требует авторизации.",
"type": "array",
"items": {
"type": "integer"
}
},
"author_email": {
"required": false,
"description": "Ограничить выборку до имеющей определённый e-mail автора. Требует авторизации.",
"type": "string"
},
"before": {
"required": false,
"description": "Ограничить ответ комментариями опубликованными до заданной ISO8601 совместимой даты.",
"type": "string"
},
"exclude": {
"required": false,
"default": [],
"description": "Убедиться что выборка исключает определенные ID.",
"type": "array",
"items": {
"type": "integer"
}
},
"include": {
"required": false,
"default": [],
"description": "Ограничить выборку до определенных ID.",
"type": "array",
"items": {
"type": "integer"
}
},
"offset": {
"required": false,
"description": "Сдвиг выборки на определенное число объектов.",
"type": "integer"
},
"order": {
"required": false,
"default": "desc",
"enum": [
"asc",
"desc"
],
"description": "Упорядочить сортировку атрибута по возрастанию или убыванию.",
"type": "string"
},
"orderby": {
"required": false,
"default": "date_gmt",
"enum": [
"date",
"date_gmt",
"id",
"include",
"post",
"parent",
"type"
],
"description": "Сортировать коллекцию по атрибуту объекта.",
"type": "string"
},
"parent": {
"required": false,
"default": [],
"description": "Ограничить выборку комментариями с определенными родительскими ID.",
"type": "array",
"items": {
"type": "integer"
}
},
"parent_exclude": {
"required": false,
"default": [],
"description": "Убедиться что выборка исключает определенные родительские ID.",
"type": "array",
"items": {
"type": "integer"
}
},
"post": {
"required": false,
"default": [],
"description": "Ограничить выборку комментариями с назначенными определенными ID записей.",
"type": "array",
"items": {
"type": "integer"
}
},
"status": {
"required": false,
"default": "approve",
"description": "Ограничить выборку комментариями с определенным статусом. Требует авторизации. ",
"type": "string"
},
"type": {
"required": false,
"default": "comment",
"description": "Ограничить выборку комментариями с определенным типом. Требует авторизации.",
"type": "string"
},
"password": {
"required": false,
"description": "Пароль для записи, если она защищена паролем.",
"type": "string"
}
}
},
{
"methods": [
"POST"
],
"args": {
"author": {
"required": false,
"description": "ID объекта пользователя, если автор - пользователь.",
"type": "integer"
},
"author_email": {
"required": false,
"description": "Адрес e-mail автора объекта.",
"type": "string"
},
"author_ip": {
"required": false,
"description": "IP адрес автора объекта.",
"type": "string"
},
"author_name": {
"required": false,
"description": "Отображаемое имя для автора объекта.",
"type": "string"
},
"author_url": {
"required": false,
"description": "URL для автора объекта.",
"type": "string"
},
"author_user_agent": {
"required": false,
"description": "Клиентское приложение для автора объекта.",
"type": "string"
},
"content": {
"required": false,
"description": "Содержимое объекта.",
"type": "object"
},
"date": {
"required": false,
"description": "Дата публикации объекта, по временной зоне сайта.",
"type": "string"
},
"date_gmt": {
"required": false,
"description": "Время публикации объекта, по GMT.",
"type": "string"
},
"parent": {
"required": false,
"default": 0,
"description": "ID родителя объекта.",
"type": "integer"
},
"post": {
"required": false,
"default": 0,
"description": "ID ассоциированного объекта записи.",
"type": "integer"
},
"status": {
"required": false,
"description": "Состояние объекта.",
"type": "string"
},
"meta": {
"required": false,
"description": "Мета поля.",
"type": "object"
}
}
}
],
"schema": {
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "comment",
"type": "object",
"properties": {
"id": {
"description": "Уникальный идентификатор для объекта.",
"type": "integer",
"context": [
"view",
"edit",
"embed"
],
"readonly": true
},
"author": {
"description": "ID объекта пользователя, если автор - пользователь.",
"type": "integer",
"context": [
"view",
"edit",
"embed"
]
},
"author_email": {
"description": "Адрес e-mail автора объекта.",
"type": "string",
"format": "email",
"context": [
"edit"
]
},
"author_ip": {
"description": "IP адрес автора объекта.",
"type": "string",
"format": "ip",
"context": [
"edit"
]
},
"author_name": {
"description": "Отображаемое имя для автора объекта.",
"type": "string",
"context": [
"view",
"edit",
"embed"
]
},
"author_url": {
"description": "URL для автора объекта.",
"type": "string",
"format": "uri",
"context": [
"view",
"edit",
"embed"
]
},
"author_user_agent": {
"description": "Клиентское приложение для автора объекта.",
"type": "string",
"context": [
"edit"
]
},
"content": {
"description": "Содержимое объекта.",
"type": "object",
"context": [
"view",
"edit",
"embed"
],
"properties": {
"raw": {
"description": "Содержимое объекта как оно существует в базе данных.",
"type": "string",
"context": [
"edit"
]
},
"rendered": {
"description": "HTML содержимое объекта преобразованное для показа.",
"type": "string",
"context": [
"view",
"edit",
"embed"
],
"readonly": true
}
}
},
"date": {
"description": "Дата публикации объекта, по временной зоне сайта.",
"type": "string",
"format": "date-time",
"context": [
"view",
"edit",
"embed"
]
},
"date_gmt": {
"description": "Время публикации объекта, по GMT.",
"type": "string",
"format": "date-time",
"context": [
"view",
"edit"
]
},
"link": {
"description": "URL объекта.",
"type": "string",
"format": "uri",
"context": [
"view",
"edit",
"embed"
],
"readonly": true
},
"parent": {
"description": "ID родителя объекта.",
"type": "integer",
"context": [
"view",
"edit",
"embed"
],
"default": 0
},
"post": {
"description": "ID ассоциированного объекта записи.",
"type": "integer",
"context": [
"view",
"edit"
],
"default": 0
},
"status": {
"description": "Состояние объекта.",
"type": "string",
"context": [
"view",
"edit"
]
},
"type": {
"description": "Тип комментария для объекта.",
"type": "string",
"context": [
"view",
"edit",
"embed"
],
"readonly": true
},
"author_avatar_urls": {
"description": "URL аватары автора объекта.",
"type": "object",
"context": [
"view",
"edit",
"embed"
],
"readonly": true,
"properties": {
"24": {
"description": "URL аватары с размером изображения в 24 пикселей.",
"type": "string",
"format": "uri",
"context": [
"embed",
"view",
"edit"
]
},
"48": {
"description": "URL аватары с размером изображения в 48 пикселей.",
"type": "string",
"format": "uri",
"context": [
"embed",
"view",
"edit"
]
},
"96": {
"description": "URL аватары с размером изображения в 96 пикселей.",
"type": "string",
"format": "uri",
"context": [
"embed",
"view",
"edit"
]
}
}
},
"meta": {
"description": "Мета поля.",
"type": "object",
"context": [
"view",
"edit"
],
"properties": []
}
}
},
"_links": {
"self": "http://wp-test.ru/wp-json/wp/v2/comments"
}
}
Список комментариев
Алгоритм схож с работой функции get_comments() .
Вид запроса
GET /wp/v2/comments
Параметры запроса
context
Область, в которой выполняется запрос; определяет поля присутствующие в ответе.
Может быть: view, embed, edit
По умолчанию: view
page
Текущая страница пагинации.
По умолчанию: 1
per_page
Максимальное число элементов, возвращаемых в результате.
По умолчанию: 10
search
Ограничьте результаты теми, которые соответствуют строке.
after
Ограничить ответ по комментариям, опубликованных после заданной даты, соответствующей ISO8601.
before
Ограничить ответ по комментариям, опубликованных до заданной даты, соответствующей ISO8601.
author
Указывает комментарии каких авторов (указывается их ID) надо вернуть. Требуется авторизация.
author_exclude
Указывает комментарии каких авторов (указывается их ID) не нужно возвращать. Требуется авторизация.
author_email
Указывает комментарии каких авторов (указывается их эл. почта) надо вернуть. Требуется авторизация.
exclude
Исключает комментарии по ID.
include
Показывает только указанные тут комментарии. Указывается ID.
offset
Смещение (отступ) набора результатов на указанное число.
orderby
По какому полю сортировать?
Может быть: date , date_gmt , id , include , post , parent , type
По умолчанию: date_gmt
order
Как сортировать?
Может быть: asc, desc
По умолчанию: desc
status
Ограничение выборки по одному статусу или нескольким. Требуется авторизация.
По умолчанию: approve
parent
Ограничение выборки на основе ID родительского комментария или комментариев.
parent_exclude
Исключает из набора комментарии на основе ID родительского комментария или комментариев.
post:
Ограничение выборки на основе ID записи (или записей), к которой прикреплены комментарии.
type
Ограничить выборку на основе типа комментария. Требуется авторизация.
По умолчанию: comment
password
Пароль для поста, если он защищен паролем.
Пример запроса
Ссылки рабочие, можно открыть в браузере и посмотреть результат.
1) Запрос на получение массива всех комментариев:
https://demo.wp-api.org/wp-json/wp/v2/comments/
Вернется массив объектов, где каждый объект комментария схож с тем, что описан в пункте "Получение комментария":
[
{
... данные комментария <id> ...
},
{
... данные комментария <id> ...
},
{
... данные комментария <id> ...
}
]
Создание комментария
Алгоритм схож с работой функции wp_insert_comment() .
Вид запроса
Доступ: нужна авторизация
POST /wp/v2/comments
Параметры запроса
author
ID пользователя, если он является зарегистрированным.
author_email
Электронная почта пользователя
author_ip
IP адрес пользователя.
author_name
Отображаемое имя автора комментария.
author_url
Ссылка на сайт автора комментария.
author_user_agent
Юзер-агент автора комментария.
content
Содержимое комментария.
date
Дата публикации комментария в часовом поясе сайта.
date_gmt
Дата публикации комментария, как GMT.
parent
ID родительского комментария.
post
ID записи, к которой будет оставлен комментарий.
status
Статус комментария.
meta
Метаполя комментария.
Пример запроса
POST http://example.com/wp-json/wp/v2/comments/?author_name=Василий&author_email=vasya@mail.com&content=Отличная статья
Запрос OPTIONS к маршруту вернет полное описание этого маршрута: эндпоинты их параметры, схему.
$ curl -X OPTIONS -i http://demo.wp-api.org/wp-json/wp/v2/comments/1
GitHub
{
"namespace": "wp/v2",
"methods": [
"GET",
"POST",
"PUT",
"PATCH",
"DELETE"
],
"endpoints": [
{
"methods": [
"GET"
],
"args": {
"id": {
"required": false,
"description": "Уникальный идентификатор для объекта.",
"type": "integer"
},
"context": {
"required": false,
"default": "view",
"enum": [
"view",
"embed",
"edit"
],
"description": "Рамки в которых сделан запрос, определяют поля в ответе.",
"type": "string"
},
"password": {
"required": false,
"description": "Пароль для родительской записи комментария (если запись защищена паролем).",
"type": "string"
}
}
},
{
"methods": [
"POST",
"PUT",
"PATCH"
],
"args": {
"id": {
"required": false,
"description": "Уникальный идентификатор для объекта.",
"type": "integer"
},
"author": {
"required": false,
"description": "ID объекта пользователя, если автор - пользователь.",
"type": "integer"
},
"author_email": {
"required": false,
"description": "Адрес e-mail автора объекта.",
"type": "string"
},
"author_ip": {
"required": false,
"description": "IP адрес автора объекта.",
"type": "string"
},
"author_name": {
"required": false,
"description": "Отображаемое имя для автора объекта.",
"type": "string"
},
"author_url": {
"required": false,
"description": "URL для автора объекта.",
"type": "string"
},
"author_user_agent": {
"required": false,
"description": "Клиентское приложение для автора объекта.",
"type": "string"
},
"content": {
"required": false,
"description": "Содержимое объекта.",
"type": "object"
},
"date": {
"required": false,
"description": "Дата публикации объекта, по временной зоне сайта.",
"type": "string"
},
"date_gmt": {
"required": false,
"description": "Время публикации объекта, по GMT.",
"type": "string"
},
"parent": {
"required": false,
"description": "ID родителя объекта.",
"type": "integer"
},
"post": {
"required": false,
"description": "ID ассоциированного объекта записи.",
"type": "integer"
},
"status": {
"required": false,
"description": "Состояние объекта.",
"type": "string"
},
"meta": {
"required": false,
"description": "Мета поля.",
"type": "object"
}
}
},
{
"methods": [
"DELETE"
],
"args": {
"id": {
"required": false,
"description": "Уникальный идентификатор для объекта.",
"type": "integer"
},
"force": {
"required": false,
"default": false,
"description": "Игнорировать ли перемещение в корзину и принудительно удалять.",
"type": "boolean"
},
"password": {
"required": false,
"description": "Пароль для родительской записи комментария (если запись защищена паролем).",
"type": "string"
}
}
}
],
"schema": {
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "comment",
"type": "object",
"properties": {
"id": {
"description": "Уникальный идентификатор для объекта.",
"type": "integer",
"context": [
"view",
"edit",
"embed"
],
"readonly": true
},
"author": {
"description": "ID объекта пользователя, если автор - пользователь.",
"type": "integer",
"context": [
"view",
"edit",
"embed"
]
},
"author_email": {
"description": "Адрес e-mail автора объекта.",
"type": "string",
"format": "email",
"context": [
"edit"
]
},
"author_ip": {
"description": "IP адрес автора объекта.",
"type": "string",
"format": "ip",
"context": [
"edit"
]
},
"author_name": {
"description": "Отображаемое имя для автора объекта.",
"type": "string",
"context": [
"view",
"edit",
"embed"
]
},
"author_url": {
"description": "URL для автора объекта.",
"type": "string",
"format": "uri",
"context": [
"view",
"edit",
"embed"
]
},
"author_user_agent": {
"description": "Клиентское приложение для автора объекта.",
"type": "string",
"context": [
"edit"
]
},
"content": {
"description": "Содержимое объекта.",
"type": "object",
"context": [
"view",
"edit",
"embed"
],
"properties": {
"raw": {
"description": "Содержимое объекта как оно существует в базе данных.",
"type": "string",
"context": [
"edit"
]
},
"rendered": {
"description": "HTML содержимое объекта преобразованное для показа.",
"type": "string",
"context": [
"view",
"edit",
"embed"
],
"readonly": true
}
}
},
"date": {
"description": "Дата публикации объекта, по временной зоне сайта.",
"type": "string",
"format": "date-time",
"context": [
"view",
"edit",
"embed"
]
},
"date_gmt": {
"description": "Время публикации объекта, по GMT.",
"type": "string",
"format": "date-time",
"context": [
"view",
"edit"
]
},
"link": {
"description": "URL объекта.",
"type": "string",
"format": "uri",
"context": [
"view",
"edit",
"embed"
],
"readonly": true
},
"parent": {
"description": "ID родителя объекта.",
"type": "integer",
"context": [
"view",
"edit",
"embed"
],
"default": 0
},
"post": {
"description": "ID ассоциированного объекта записи.",
"type": "integer",
"context": [
"view",
"edit"
],
"default": 0
},
"status": {
"description": "Состояние объекта.",
"type": "string",
"context": [
"view",
"edit"
]
},
"type": {
"description": "Тип комментария для объекта.",
"type": "string",
"context": [
"view",
"edit",
"embed"
],
"readonly": true
},
"author_avatar_urls": {
"description": "URL аватары автора объекта.",
"type": "object",
"context": [
"view",
"edit",
"embed"
],
"readonly": true,
"properties": {
"24": {
"description": "URL аватары с размером изображения в 24 пикселей.",
"type": "string",
"format": "uri",
"context": [
"embed",
"view",
"edit"
]
},
"48": {
"description": "URL аватары с размером изображения в 48 пикселей.",
"type": "string",
"format": "uri",
"context": [
"embed",
"view",
"edit"
]
},
"96": {
"description": "URL аватары с размером изображения в 96 пикселей.",
"type": "string",
"format": "uri",
"context": [
"embed",
"view",
"edit"
]
}
}
},
"meta": {
"description": "Мета поля.",
"type": "object",
"context": [
"view",
"edit"
],
"properties": []
}
}
}
}
Получение комментария
Алгоритм схож с работой функции get_comment() .
Вид запроса
Доступ: публичный
GET /wp/v2/comments/{id}
Параметры запроса
id (обязательный)
Уникальный идентификатор комментария. Указывается в маршруте.
context
Область, в которой выполняется запрос; определяет поля, присутствующие в ответе. Может быть view , embed , edit .
По умолчанию: view
password
Пароль для получения доступа к защищенной паролем записи, комментарии к которой нужно получить.
Пример запроса
$ curl http://demo.wp-api.org/wp-json/wp/v2/comments/{id}
Пример запроса объект комментария с ID=1:
https://demo.wp-api.org/wp-json/wp/v2/comments/1
Ответ:
{
"id": 1,
"post": 1,
"parent": 0,
"author": 0,
"author_name": "A WordPress Commenter",
"author_url": "http://wp-api.org/",
"date": "2017-05-23T06:25:50",
"date_gmt": "2017-05-23T06:25:50",
"content": {
"rendered": "<p>Hi, this is a comment.<br />\nTo get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.<br />\nCommenter avatars come from <a href=\"https://gravatar.com\">Gravatar</a>.</p>\n"
},
"link": "https://demo.wp-api.org/2017/05/23/hello-world/#comment-1",
"status": "approved",
"type": "comment",
"author_avatar_urls": {
"24": "https://secure.gravatar.com/avatar/d7a973c7dab26985da5f961be7b74480?s=24&d=mm&r=g",
"48": "https://secure.gravatar.com/avatar/d7a973c7dab26985da5f961be7b74480?s=48&d=mm&r=g",
"96": "https://secure.gravatar.com/avatar/d7a973c7dab26985da5f961be7b74480?s=96&d=mm&r=g"
},
"meta": [],
"_links": {
"self": [
{
"href": "https://demo.wp-api.org/wp-json/wp/v2/comments/1"
}
],
"collection": [
{
"href": "https://demo.wp-api.org/wp-json/wp/v2/comments"
}
],
"up": [
{
"embeddable": true,
"post_type": "post",
"href": "https://demo.wp-api.org/wp-json/wp/v2/posts/1"
}
],
"children": [
{
"href": "https://demo.wp-api.org/wp-json/wp/v2/comments?parent=1"
}
]
}
}
Обновление комментария
Алгоритм схож с работой функции wp_update_comment() .
Вид запроса
Доступ: нужна авторизация
POST /wp/v2/comments/{id}
Параметры запроса
id
ID комментария, который надо обновить. Указывается в маршруте.
author
ID пользователя, если он является зарегистрированным.
author_email
Электронная почта пользователя
author_ip
IP адрес пользователя.
author_name
Отображаемое имя автора комментария.
author_url
Ссылка на сайт автора комментария.
author_user_agent
Юзер-агент автора комментария.
content
Содержимое комментария.
date
Дата публикации комментария в часовом поясе сайта.
date_gmt
Дата публикации комментария, как GMT.
parent
ID родительского комментария.
post
ID записи, к которой будет оставлен комментарий.
status
Статус комментария.
meta
Метаполя комментария.
Пример запроса
Обновим контент комментария с ID=1 :
POST http://example.com/wp-json/wp/v2/comments/?id=1&content=Хорошая статья
Удаление комментария
Алгоритм схож с работой функции wp_delete_comment() .
Вид запроса
Доступ: нужна авторизация
DELETE /wp/v2/comments/{id}
Параметры запроса
id
ID комментария, который надо удалить. Указывается в маршруте.
force
Принудительное удаление. Если нужно удалить комментарий не помещая его в корзину, ставим true.
По умолчанию: false
password
Пароль для получения доступа к защищенной паролем записи, комментарии к которой нужно удалить.
Пример запроса
$ curl -X DELETE http://demo.wp-api.org/wp-json/wp/v2/comments/<id>