Создать сеть
const url = 'https://example.com/wp-json/wp2/multi-network/v1/networks';const options = { method: 'POST', headers: {'X-WP-Nonce': '<X-WP-Nonce>', 'Content-Type': 'application/json'}, body: '{"domain":"network2.example.com","path":"/","site_name":"Главный сайт сети","network_name":"Сеть два","user_id":1,"clone_network_id":1,"options_to_clone":["site_name","admin_email"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/wp-json/wp2/multi-network/v1/networks \ --header 'Content-Type: application/json' \ --header 'X-WP-Nonce: <X-WP-Nonce>' \ --data '{ "domain": "network2.example.com", "path": "/", "site_name": "Главный сайт сети", "network_name": "Сеть два", "user_id": 1, "clone_network_id": 1, "options_to_clone": [ "site_name", "admin_email" ] }'Создаёт новую сеть WordPress (wp-multi-network add_network) на установке, где модуль Multi-Network committed и доступна функция add_network. Это не создание блога внутри текущей сети: появляется отдельная сеть со своим корневым сайтом.
Обязательны domain, path и site_name (иначе 400 missing_fields). Пустые строки после trim считаются отсутствующими. domain PHP приводит к нижнему регистру и вырезает пробелы.
Можно не передавать user_id — супер-админ новой сети, по умолчанию текущий пользователь; несуществующий id — 403 network_user. clone_network_id — с какой сети копировать network-meta; по умолчанию текущая сеть запроса (get_current_network_id). options_to_clone — какие опции копировать; если не передать, PHP берёт ключи network_options_to_copy() (admin_email, allowedthemes, site_admins и т.д.). network_name после создания пишется в опцию сети site_name; это не то же самое, что site_name (blogname корневого сайта).
Нужно право create_networks. Cookie + X-WP-Nonce или Application Password.
Authorizations
Заголовок раздела «Authorizations»Request Bodyrequired
Заголовок раздела «Request Bodyrequired»object
Хост новой сети без https:// (например network2.example.com). Обязательно. PHP: trim, lowercase, пробелы вырезаются. Пустое значение — 400 missing_fields. Уже занятая пара domain+path — ошибка insert_network network_exists (REST обычно 500).
Путь новой сети, не путь файла. Обычно / для домена целиком. Обязательно. add_network приводит к нижнему регистру, без пробелов и с / на конце. Это не поле Local Sync.
Заголовок корневого сайта новой сети (blogname). Обязательно. Не путать с network_name — то имя самой сети в network options.
Отображаемое имя сети. Необязательно. Если передать непустое значение, PHP после add_network делает update_network_option(…, ‘site_name’, …). Если не передать — остаётся дефолт wp-multi-network (часто «New Network»).
ID пользователя, которого назначить администратором новой сети. Необязательно: по умолчанию текущий пользователь REST. Пользователь должен существовать, иначе add_network вернёт 403 network_user. Не означает «создать сеть от имени другого клиента Studio».
ID сети-источника, с которой копировать network-meta. Необязательно: по умолчанию сеть текущего запроса (get_current_network_id). В PHP уходит в аргумент add_network clone_network.
Имена network-опций, которые копировать с clone_network_id. Необязательно. Если не передать, PHP подставляет ключи network_options_to_copy(): admin_email, allowedthemes, site_admins, upload_filetypes, welcome_email и др. Пустой массив — ничего не копировать (поле передано). Не выдумывать ключи: только то, что принимает wp-multi-network.
Example
{ "domain": "network2.example.com", "path": "/", "site_name": "Главный сайт сети", "network_name": "Сеть два", "user_id": 1, "clone_network_id": 1, "options_to_clone": [ "site_name", "admin_email" ]}Responses
Заголовок раздела «Responses»Сеть создана. Тело — format_network: id, domain/path, корневой сайт, URL админки сети и сайта.
object
ID сети WordPress (WP_Network->id). В path GET …/networks/{network_id} — то же число.
Хост сети, как в таблице wp_site (без схемы). Совпадает с тем, что передали при создании, после lowercasing.
Путь сети с завершающим слэшем (add_network делает trailingslashit). Обычно /.
ID корневого сайта этой сети (WP_Network->site_id), не ID сети.
Blogname корневого сайта (get_blog_option site_id, blogname). Это заголовок сайта, не опция сети.
Опция сети site_name (get_network_option). Если при создании передали network_name — оно здесь.
URL сетевой админки {scheme}://{domain}{path}wp-admin/network/. scheme = https при is_ssl().
URL корневого сайта сети {scheme}://{domain}{path}.
Example
{ "network_id": 2, "domain": "network2.example.com", "path": "/", "site_id": 5, "site_name": "Главный сайт сети", "network_name": "Сеть два", "admin_url": "https://network2.example.com/wp-admin/network/", "site_url": "https://network2.example.com/"}Missing_fields — нет domain, path или site_name (пустая строка после trim).
object
Машинный код ошибки или события.
Текст сообщения (лог, PIN, сброс пароля).
Дополнительные данные WP_Error или лицензии.
object
Examplegenerated
{ "code": "example", "message": "example", "data": {}}Не аутентифицирован. DualRest: rest_forbidden (status 401), если нет cookie-сессии. Cookie + X-WP-Nonce или Application Password.
object
Машинный код ошибки или события.
Текст сообщения (лог, PIN, сброс пароля).
Дополнительные данные WP_Error или лицензии.
object
Examplegenerated
{ "code": "example", "message": "example", "data": {}}Нет права create_networks, невалидный REST nonce, либо add_network: network_user / network_super_admin (указанный user_id не существует).
object
Машинный код ошибки или события.
Текст сообщения (лог, PIN, сброс пароля).
Дополнительные данные WP_Error или лицензии.
object
Examplegenerated
{ "code": "example", "message": "example", "data": {}}WP_Error из insert_network/add_network без HTTP-status в data (часто network_exists — такая сеть уже есть, network_empty — пустой domain). WordPress REST отдаёт такие ошибки как 500.
object
Машинный код ошибки или события.
Текст сообщения (лог, PIN, сброс пароля).
Дополнительные данные WP_Error или лицензии.
object
Examplegenerated
{ "code": "example", "message": "example", "data": {}}Multi_network_not_ready — модуль не committed или нет функции add_network.
object
Машинный код ошибки или события.
Текст сообщения (лог, PIN, сброс пароля).
Дополнительные данные WP_Error или лицензии.
object
Examplegenerated
{ "code": "example", "message": "example", "data": {}}