Перейти к содержимому

Дублировать сайт (асинхронно)

POST
/wp-json/wp2/site-duplicator/v1/sites/{blog_id}/duplicate
curl --request POST \
--url https://example.com/wp-json/wp2/site-duplicator/v1/sites/1/duplicate \
--header 'Content-Type: application/json' \
--header 'X-WP-Nonce: <X-WP-Nonce>' \
--data '{ "title": "example", "slug": "example", "description": "example", "status_id": 1, "category_ids": [ 1 ] }'

Ставит в очередь полное дублирование указанного сайта. Обязательны title и slug. Ответ 202 с идентификатором задания. Пустой сайт этой ручкой не создаётся — для этого POST /sites в Site Manager без source_blog_id.

blog_id
required
integer

ID сайта сети. На одиночном сайте можно не передавать.

Media typeapplication/json
object
title
required

Заголовок.

string
slug
required

Ярлык (сайт, запись, секция).

string
description

Поле «description», как принимает или отдаёт PHP.

string
status_id

ID статуса сайта.

integer
category_ids

Поле «category_ids», как принимает или отдаёт PHP.

Array<integer>
Examplegenerated
{
"title": "example",
"slug": "example",
"description": "example",
"status_id": 1,
"category_ids": [
1
]
}

Задание принято

Media typeapplication/json
object
job_id

UUID задания (PlatformJob::$job_id). В Site Manager GET отдаёт 404 job_not_found, если тип не начинается с site_manager. или записи нет.

string format: uuid
type

Машинный тип задания. Site Manager: site_manager.create_from_source, site_manager.bulk. Site Duplicator использует свои префиксы того же PlatformJob.

string
status

Статус жизненного цикла (pending / running / completed / failed; PHP также может отдать cancelled как терминальный).

string
Allowed values: pending running completed failed
phase

Текущая фаза воркера (короткая метка прогресса, например bulk), не HTTP-статус.

string
progress

Счётчики прогресса (percent / current / total), как сложил воркер в PlatformJob::$progress.

object
percent

Процент выполнения 0–100, если воркер его пишет.

integer
current

Сколько единиц уже обработано.

integer
total

Сколько единиц всего (например число blog_ids в bulk).

integer
message

Человекочитаемый статус воркера (не PIN и не лог WP-CLI).

string
user_id

Кто поставил задание. GET чужого job без manage_network — 403 forbidden. Список jobs отдаёт только задания текущего пользователя.

integer
network_id

Сеть, в которой создали задание. Чужая сеть — 404 job_not_in_network (текст «Job not found.»).

integer
payload

Вход воркера (для bulk — blog_ids/action/patch/drop_tables; для create_from_source — source_blog_id и поля нового сайта).

object
result

Результат после completed (для bulk — succeeded/failed/total/processed). null, пока задание не закончено успешно.

object
error

Ошибка при failed. PHP кладёт массив {code, message} в PlatformJob::$error; null, если не падало.

string
nullable
created_at

Время создания задания (GMT, gmdate('c')).

string format: date-time
updated_at

Время последнего обновления прогресса/статуса.

string format: date-time
completed_at

Время перехода в терминальный статус; null, пока задание идёт.

string format: date-time
nullable
Example
{
"status": "pending"
}
Location
string
Retry-After
integer

Не аутентифицирован. WordPress REST: rest_not_logged_in / rest_forbidden. Cookie + X-WP-Nonce или Application Password.

Media typeapplication/json
object
code

Машинный код ошибки или события.

string
message

Текст сообщения (лог, PIN, сброс пароля).

string
data

Дополнительные данные WP_Error или лицензии.

object
Examplegenerated
{
"code": "example",
"message": "example",
"data": {}
}

Нет права или невалидный REST nonce. WordPress REST: rest_forbidden / rest_cookie_invalid_nonce.

Media typeapplication/json
object
code

Машинный код ошибки или события.

string
message

Текст сообщения (лог, PIN, сброс пароля).

string
data

Дополнительные данные WP_Error или лицензии.

object
Examplegenerated
{
"code": "example",
"message": "example",
"data": {}
}