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

Развернуть динамические шорткоды

POST
/wp-json/wp2lms/turbo/v1/dsh/expand
curl --request POST \
--url https://example.com/wp-json/wp2lms/turbo/v1/dsh/expand \
--header 'Content-Type: application/json' \
--data '{ "items": [ { "id": "island-hero", "src": "e2RzaDpwb3N0OmNvbnRlbnR9", "post_id": 42 } ], "post_id": 42 }'

Публично разворачивает острова Dynamic Shortcodes для гидрации на Turbo-странице. PHP: до 40 элементов (Expander::MAX_ITEMS); src — base64url исходника шорткода (decodeSrc), не сырой {dsh:…} в JSON. Корневой post_id задаёт $GLOBALS['post'] для контекста; у элемента свой post_id важнее. Пустой/немассив items или все элементы отброшены (пустой id/src, битый base64) — 400 invalid_items. Больше 40 — 400 too_many_items. Плагин Dynamic Shortcodes недоступен или фильтр wp2turbo/dsh/enable выключил мост — 403 disabled. Нужен nonce wp_rest (403 invalid_nonce). Это не GET …/static/{id} и не heartbeat data[wp2t_dsh]. В REST нет 503: heartbeat-фоллбэк 503 в эту ручку не мапится. Cookie-сессия не требуется.

Media typeapplication/json
object
items

Острова для разворота, максимум 40. Пустой массив или не массив — 400 invalid_items. Можно передать JSON-строку — PHP json_decode.

Array<object>
object
id

Клиентский id острова гидрации (ключ в ответе expansions[].id). Пустой id PHP отбрасывает.

string
src

Исходник шорткода в base64url (Expander::encodeSrc / decodeSrc), не сырой {dsh:…}. Пустой или недекодируемый — элемент пропускается. Лимит декодированного src — 16384 байт.

string
post_id

Контекст записи для этого острова (важнее корневого post_id). 0 / отсутствие — берётся корневой post_id.

integer
post_id

ID записи для setup_postdata / дефолтного embed post:content, если у элемента нет своего post_id.

integer
Example
{
"items": [
{
"id": "island-hero",
"src": "e2RzaDpwb3N0OmNvbnRlbnR9",
"post_id": 42
}
],
"post_id": 42
}

Ok, список expansions (id, html, опционально hash), объект assets (styles/scripts/headScripts), свежий nonce wp_rest.

Media typeapplication/json
object
ok

PHP всегда true на HTTP 200.

boolean
expansions

Список островов в порядке обработки, не объект с ключами id.

Array<object>
object
id

Тот же id острова, что в запросе.

string
html

Развёрнутый HTML. При ошибке острова — HTML-комментарий <!-- dsh-error: … -->, не WP_Error всей ручки.

string
hash

ContentHash фрагмента, только если остров — embed post:content через StaticPageRenderer.

string
assets
object
styles

CSS, нужный вставленным островам.

Array<object>
object
href

URL стиля или скрипта; у inline-скрипта может быть null.

string
nullable
inline

Инлайн-JS, если PHP отдал ключ inline.

string
scripts

Скрипты тела страницы.

Array<object>
object
href

URL стиля или скрипта; у inline-скрипта может быть null.

string
nullable
inline

Инлайн-JS, если PHP отдал ключ inline.

string
headScripts

Скрипты для head.

Array<object>
object
href

URL стиля или скрипта; у inline-скрипта может быть null.

string
nullable
inline

Инлайн-JS, если PHP отдал ключ inline.

string
nonce

Свежий wp_create_nonce(‘wp_rest’) для следующего expand.

string
Example
{
"ok": true,
"expansions": [
{
"id": "island-hero",
"html": "<p>Иван Петров</p>"
}
],
"assets": {
"styles": [],
"scripts": [],
"headScripts": []
},
"nonce": "a1b2c3d4e5"
}

Invalid_items — нет валидных островов; too_many_items — больше 40 items.

Media typeapplication/json
object
code

Машинный код WP_Error (например wp2lms_static_builder_busy, rest_forbidden, invalid_nonce).

string
message

Человекочитаемое сообщение ошибки из PHP / WordPress REST.

string
data

Обычно { status: <HTTP-код> }. Если status нет, ядро REST часто отдаёт 500.

object
key
additional properties
any
Example
{
"code": "wp2lms_static_builder_busy",
"message": "Build is currently building and cannot be updated.",
"data": {
"status": 409
}
}

Disabled — нет Dynamic Shortcodes или фильтр wp2turbo/dsh/enable=false; invalid_nonce — нет/неверный wp_rest nonce.

Media typeapplication/json
object
code

Машинный код WP_Error (например wp2lms_static_builder_busy, rest_forbidden, invalid_nonce).

string
message

Человекочитаемое сообщение ошибки из PHP / WordPress REST.

string
data

Обычно { status: <HTTP-код> }. Если status нет, ядро REST часто отдаёт 500.

object
key
additional properties
any
Example
{
"code": "wp2lms_static_builder_busy",
"message": "Build is currently building and cannot be updated.",
"data": {
"status": 409
}
}