Получить список сайтов текущей сети
const url = 'https://example.com/wp-json/wp2/site-manager/v1/sites?page=1&per_page=20&archived=0&deleted=0&spam=0&public=0&is_template=0&orderby=title&order=ASC';const options = {method: 'GET', headers: {'X-WP-Nonce': '<X-WP-Nonce>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/wp-json/wp2/site-manager/v1/sites?page=1&per_page=20&archived=0&deleted=0&spam=0&public=0&is_template=0&orderby=title&order=ASC' \ --header 'X-WP-Nonce: <X-WP-Nonce>'Постраничный список сайтов текущей сети (get_sites + meta Site Manager). Не список сетей.
Нужны manage_network или manage_options. Без manage_network PHP ограничивает выборку сайтами текущего пользователя (get_blogs_of_user → site__in); если сайтов нет — пустые items.
Только multisite: иначе 400 not_multisite. Cookie + X-WP-Nonce или Application Password.
Authorizations
Заголовок раздела «Authorizations»Parameters
Заголовок раздела «Parameters»Query Parameters
Заголовок раздела «Query Parameters»Номер страницы, с 1. PHP: max(1, page).
Сайтов на странице. PHP: max(1, min(100, per_page ?: 20)).
Строка get_sites['search'] (домен/path ядра). Пустая или отсутствующая — без поиска.
Фильтр по site meta wp2platform_site_status (term_id статуса Site Manager). Учитывается только > 0. Это не WP_Site->public.
Фильтр по site meta wp2platform_site_categories (LIKE по id категории). Учитывается только > 0.
Флаг WP_Site->archived для get_sites: 1 — только архивные, 0 — только неархивные. Нет параметра — без фильтра.
Флаг WP_Site->deleted в таблице блогов (ядро пометило сайт удалённым). Не «сущность удалена этой API».
Флаг WP_Site->spam для get_sites: 1 — только спам, 0 — только не спам. Нет параметра — без фильтра по spam.
Флаг WP_Site->public (публичность/активность блога в сети). Не термин статуса Site Manager. 1 или 0; нет параметра — без фильтра.
Фильтр по site meta wp2platform_site_manager_is_template: 1 — шаблон для дублирования, 0 — обычный сайт.
Поле сортировки. blog_id/id — колонка id; registered — дата регистрации WP_Site; slug — path в get_sites; title и status_id сортируются в PHP после выборки (blogname / meta статуса). Неизвестный ключ → id. По умолчанию PHP берёт id. При title/status_id главный сайт сети поднимается первым.
Направление сортировки. Иное значение PHP приводит к DESC. По умолчанию DESC.
Если строка содержит stats, в каждый SiteDto добавляется user_count (count_users на сайте). Иначе PHP поле не отдаёт. Другие токены игнорируются.
Responses
Заголовок раздела «Responses»Страница сайтов текущей сети (items, total, page, per_page, total_pages).
object
Страница сайтов текущей сети после фильтров get_sites / PHP-сортировки.
object
ID сайта в текущей сети (WP_Site->blog_id). Path {blog_id} тех же ручек — то же число.
ID сети, которой принадлежит сайт (WP_Site->site_id). Это не blog_id и не CreateNetworkRequest.domain.
Заголовок сайта — опция блога blogname (get_option на этом сайте). Не опция сети site_name.
Адресный ярлык сайта. При SUBDOMAIN_INSTALL — поддомен относительно domain сети; иначе сегмент WP_Site->path без слэшей. PHP считает его в SiteSlugService::derive_slug_from_site.
Хост сайта в таблице блогов (WP_Site->domain), без схемы https://.
Путь сайта в таблице блогов (WP_Site->path) со слэшами (часто / при поддоменах или /training/ при subdirectory). Это не путь файла Local Sync.
Подзаголовок сайта — опция блога blogdescription.
ID термина таксономии статусов Site Manager (site meta wp2platform_site_status). null, если статус не задан или id=0.
Развёрнутый термин статуса Site Manager. null, если статус не задан. Не путать с флагом WP_Site->public.
object
Term_id статуса.
Отображаемое имя статуса.
Ярлык термина статуса (sanitize_title).
ID терминов категорий Site Manager (site meta wp2platform_site_categories).
Развёрнутые категории сайта (id, name, slug). Во вложении SiteDto PHP не отдаёт parent.
object
Term_id категории сайтов (таксономия Site Manager, не рубрика записей).
Отображаемое имя термина. В списке PHP может подменить дефолтные ярлыки через translate_default_term_label.
Ярлык термина категории (sanitize_title при записи).
Term_id родителя (WP_Term->parent); 0 — корень. В SiteDto.categories PHP это поле не кладёт.
Публичный URL сайта (get_site_url(blog_id)).
URL wp-admin этого сайта (get_admin_url(blog_id)), не /wp-admin/network/.
Дата регистрации блога (WP_Site->registered), как хранит ядро.
Дата последнего обновления блога (WP_Site->last_updated).
Флаг WP_Site->public (1 — публичный/активный, 0 — снят с публикации). Не термин статуса Site Manager.
Флаг WP_Site->archived (1 — в архиве, 0 — нет).
Флаг WP_Site->deleted в таблице блогов (ядро пометило сайт удалённым). Не результат DELETE этой API.
Флаг WP_Site->spam (1 — помечен как спам).
Флаг WP_Site->mature.
True, если это главный сайт сети (is_main_site(blog_id)). Его нельзя удалить, архивировать, деактивировать или сменить ему slug через API (main_site_forbidden / main_site_slug_forbidden).
True, если site meta wp2platform_site_manager_is_template равно 1 (сайт-шаблон для дублирования).
Число пользователей на сайте (count_users()['total_users']). PHP добавляет поле, только если в query include есть подстрока stats; иначе ключа нет.
Число сайтов, попавших в фильтр (count get_sites или count после PHP-сортировки title/status_id).
Запрошенная страница (max(1, page)).
Размер страницы (max(1, min(100, per_page)), по умолчанию 20).
ceil(total / per_page).
Example
{ "items": [ { "blog_id": 5, "network_id": 1, "title": "Учебный проект", "slug": "training", "domain": "training.example.com", "path": "/", "description": "Песочница для курса", "status_id": 12, "status": { "id": 12, "name": "В работе", "slug": "in-progress" }, "category_ids": [ 3 ], "categories": [ { "id": 3, "name": "Учебные проекты", "slug": "training" } ], "site_url": "https://training.example.com/", "admin_url": "https://training.example.com/wp-admin/", "registered": "2024-03-01 10:15:00", "last_updated": "2026-09-12 18:40:11", "public": 1, "archived": 0, "deleted": 0, "spam": 0, "mature": 0, "is_main_site": false, "is_template": false } ], "total": 12, "page": 1, "per_page": 20, "total_pages": 1}Not_multisite — установка не multisite.
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": {}}Нет права manage_network/manage_options или невалидный REST nonce (rest_cookie_invalid_nonce).
object
Машинный код ошибки или события.
Текст сообщения (лог, PIN, сброс пароля).
Дополнительные данные WP_Error или лицензии.
object
Examplegenerated
{ "code": "example", "message": "example", "data": {}}