Настройки, главная и кэш
Три ручки уровня сайта: настройки (/settings), главная страница (/front-page) и сброс кэша (/cache/flush). Все — под $API/site/$SITE/. Записи идут через ядро WordPress на домене сайта, поэтому срабатывают те же хуки, что при сохранении в админке: Polylang, SEO, кэши.
Настройки сайта
curl -s -H "Authorization: Bearer $OP_TOKEN" "$API/site/$SITE/settings" | jq '.settings | {blogname, blogdescription, blog_public, site_icon, site_icon_url, domain, show_on_front, page_on_front}'
{
"blogname": "Test",
"blogdescription": "Multipress website",
"blog_public": 1,
"site_icon": 4827,
"site_icon_url": "https://test.onpress.pro/wp-content/uploads/sites/233/2025/02/cropped-6sdc-2.png",
"domain": "test.onpress.pro",
"show_on_front": "page",
"page_on_front": 5776
}
Ответ также несёт blogs_public (флаг видимости в реестре сети), template и stylesheet (тема) и analytics — публичные настройки счётчиков: id счётчиков и ресурсов, признаки подключения и подтверждения, коды подтверждения, которые и так стоят в <meta> страниц. Секреты — OAuth-токен Вебмастера ywm_client_token — в ответ не попадают никогда, ни администратору, ни суперадмину: поля отдаются по белому списку, и ответ PATCH устроен так же.
Изменить
curl -s -X PATCH "$API/site/$SITE/settings" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"blogname": "OnPress", "blogdescription": "Платформа сайтов с API", "blog_public": 1}' | jq '{changed, cache}'
{
"changed": ["blogdescription"],
"cache": { "polylang": { "transients": ["pll_languages_list", "pll_translated_slugs"], "model_cache": true }, "object": true, "supercache": { "status": "flushed" } }
}
| Поле | Что делает |
|---|---|
blogname | название сайта, не пустое. Видно в <title> по шаблону SEO, в биндах site.name, в onpress/copyright |
blogdescription | описание сайта |
blog_public | 1/0 или true/false — видимость для поисковиков: пишется и в опцию сайта, и в реестр сети. 0 — noindex на всём сайте |
site_icon | id картинки из медиатеки этого сайта — иконка сайта; 0 снимает |
analytics | объект с публичными ключами счётчиков: ym_counter_id, ym_enabled, ym_counter_name, ga_measurement_id, ga_property_id, ga_property_name, ga_enabled, gsc_verification_token, gsc_site_url, gsc_verified, ywm_host_id, ywm_site_url, ywm_verification_token, ywm_verified, ywm_client_host_id, ywm_client_site_url, ywm_client_verification_token, ywm_client_verified, ywm_client_login, ywm_client_user_id, ywm_client_connected_at. Непереданные ключи не трогаются |
Неизвестное поле — 400 unknown_field со списком допустимых; не строка там, где нужна строка, — 400 invalid_<поле>; пустое тело — 400 nothing_to_change. Неизвестный ключ в analytics — 400 invalid_analytics со списком допустимых в allowed; секрет (ywm_client_token и всё, что похоже на токен, ключ или пароль) — 400 secret_field, имена в fields: токен Вебмастера ставит только вход через OAuth в разделе «Аналитика», снимает отключение там же. changed — что реально поменялось. Изменившая что-то запись сбрасывает кэш страниц и объектный кэш сайта.
Полноценное подключение счётчиков (создать счётчик Метрики, получить доступ, подтвердить сайт в Вебмастере и Search Console) делает раздел «Аналитика» дашборда; analytics здесь — прямая запись значений.
То же самое доступно через системный источник: PATCH $API/site/$SITE/data/site.settings с полями name и description (или теми же blogname, blogdescription), плюс blog_public, site_icon, analytics — после записи пересобираются фреймы, выводящие название сайта.
Главная страница
curl -s -X PUT "$API/site/$SITE/front-page" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"page": "/home/"}' | jq '{changed, show_on_front, page_on_front, front_pages, before}'
{
"changed": false,
"show_on_front": "page",
"page_on_front": 5776,
"front_pages": {
"en": { "id": 5776, "url": "https://test.onpress.pro/" },
"ru": { "id": 6037, "url": "https://test.onpress.pro/ru/" }
},
"before": { "show_on_front": "page", "page_on_front": 5776 }
}
| Поле | Смысл |
|---|---|
page | id или путь страницы |
lang | если путь есть в нескольких языках — взять страницу этого языка |
Ставит show_on_front=page и page_on_front. На многоязычном сайте главная сайта всегда хранит страницу языка по умолчанию: пришлите любую страницу группы переводов — запишется её участник основного языка, а Polylang отдаст остальных участников главными их языков (front_pages). Страница не основного языка без перевода на основной — 409 no_default_translation: сначала свяжите переводы. Страница должна быть опубликована. Сбрасываются кэш языков, кэш страниц и объектный кэш.
Главная — единственная страница, которую нельзя удалить: DELETE /pages/{ref} на ней и на главных языков отвечает 409 front_page_delete. Сначала переназначьте главную.
То же через источник: PUT $API/site/$SITE/data/site.front_page {"page": "/home/"}.
Кэш
Готовые страницы кэширует WP Super Cache, веб-сервер отдаёт их без PHP. Ручки API после своих записей сбрасывают нужное сами, поэтому эта ручка — для случаев, когда правка прошла мимо API или результат надо увидеть немедленно.
# точечно: по адресам и по id страниц
curl -s -X POST "$API/site/$SITE/cache/flush" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"urls": ["/docs/", "/ru/docs-ru/"], "pages": [6186]}' | jq .flushed
{
"urls": {
"status": "flushed",
"by": "wpsc_delete_url_cache",
"urls": ["https://test.onpress.pro/docs/vvedenie/", "/docs/", "/ru/docs-ru/"],
"skipped": [],
"dirs": ["…/supercache/test.onpress.pro"]
}
}
| Поле | Что сбрасывает |
|---|---|
urls | закэшированные копии этих адресов (путь или полный адрес); адрес со строкой запроса пропускается — такие не кэшируются. Уходят и копии разбивки (…/page/2/) |
pages | то же по id страниц |
supercache | true — весь кэш страниц сайта; перекрывает urls и pages |
object | true — объектный кэш сайта |
polylang | true — кэш списка языков и переведённых слагов |
transients | массив имён временных записей; имя* — все с таким началом (onpress_critical*) |
Хотя бы одно поле обязательно — иначе 400 nothing_to_flush. Предпочитайте точечный сброс: весь кэш — это прогрев сайта с нуля. В ответе flushed по каждому виду: status (flushed — что-то сброшено, empty — сбрасывать было нечего, failed — каталог кэша не найден), skipped — адреса, которые не кэшируются.
Проверяйте результат запросом без кук: вошедшему в WordPress кэш не отдаётся, и он видит свежую страницу, даже когда посетители видят старую.