Установить связь страницы с пакетом
const url = 'https://example.com/wp-json/wp2lms-pro/embed-packages/v1/pages/128/package?blog_id=1';const options = { method: 'PUT', headers: {'X-WP-Nonce': '<X-WP-Nonce>', 'Content-Type': 'application/json'}, body: '{"enabled":true,"package_id":42,"alpine":false,"launch_path":"about.html"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PUT \ --url 'https://example.com/wp-json/wp2lms-pro/embed-packages/v1/pages/128/package?blog_id=1' \ --header 'Content-Type: application/json' \ --header 'X-WP-Nonce: <X-WP-Nonce>' \ --data '{ "enabled": true, "package_id": 42, "alpine": false, "launch_path": "about.html" }'Записывает meta подмены страницы пакетом (PagePackageReplace::save). page_id — ID страницы WordPress, не blog_id и не ID пакета. Не страница — 404 embed_packages_page_not_found.
enabled необязателен, по умолчанию true. Если enabled=true, нужен существующий package_id (CPT wp2lms_embed_pkg), иначе 400 embed_packages_invalid_package. alpine по умолчанию false. launch_path — относительный HTML внутри пакета; если ключ не передан, PHP не трогает сохранённый путь (null в save). Пустая строка пути сбрасывает override.
Это не загрузка файлов пакета и не создание страницы.
Нужно manage_network (multisite) или edit_pages. Cookie + X-WP-Nonce или Application Password.
Authorizations
Заголовок раздела «Authorizations»Parameters
Заголовок раздела «Parameters»Path Parameters
Заголовок раздела «Path Parameters»ID страницы WordPress (post_type=page), к которой привязан embed-пакет. Не blog_id и не ID пакета. Если запись не страница — 404 embed_packages_page_not_found.
Example
128Query Parameters
Заголовок раздела «Query Parameters»ID сайта сети (switch_to_blog). Необязательно: по умолчанию текущий блог запроса. Не ID пакета и не page_id. Минимум 1; на одиночном сайте должен совпадать с текущим — иначе 400 embed_packages_invalid_blog. В сети неизвестный сайт или сайт другой сети — 404 embed_packages_unknown_blog.
Example
1Request Body
Заголовок раздела «Request Body»object
Включить подмену. Необязательно: если ключа нет, PHP ставит true. При true нужен валидный package_id.
ID CPT wp2lms_embed_pkg. Обязателен, если enabled=true (иначе 400 embed_packages_invalid_package). При enabled=false можно 0.
Alpine-обвязка. Необязательно, по умолчанию false (! empty). При enabled=false PHP сбрасывает meta alpine.
Относительный .html/.htm внутри пакета. Если ключ не передан — сохранённый путь не меняется. Пустая/небезопасная строка сбрасывает override.
Example
{ "enabled": true, "package_id": 42, "alpine": false, "launch_path": "about.html"}Responses
Заголовок раздела «Responses»Привязка сохранена. Тело — та же форма, что у GET; если пакет ещё не resolved, effective_launch_path будет пустой строкой.
object
ID страницы WordPress (post_type=page), к которой привязан пакет. Не blog_id и не ID пакета.
Включена ли подмена вывода (_wp2_embed_replace_with_package = «1»).
ID CPT-пакета из meta страницы (0, если не задан).
Просить Alpine-обвязку при подмене (_wp2_embed_replace_alpine).
Override пути запуска на странице (_wp2_embed_replace_launch_path), без дефолта пакета. Пусто — нет override.
Фактический HTML запуска: override страницы или meta.launch_path пакета. У GET при unresolved — только override; у PUT при unresolved — пустая строка.
ID пакета, если подмена включена, пакет published и launch-файл читается с диска; иначе JSON null. Это не объект URL.
Example
{ "page_id": 128, "enabled": true, "package_id": 42, "alpine": false, "launch_path": "about.html", "effective_launch_path": "about.html", "resolved": 42}Embed_packages_invalid_package — enabled=true, но package_id ≤ 0 или это не CPT пакета; embed_packages_invalid_blog — некорректный blog_id.
object
Код WP_Error (get_error_code()), например embed_packages_not_found.
Текст WP_Error (get_error_message()).
Data WP_Error. Обычно { "status": 404 }. Ошибки ingest/materialize без status WordPress REST отдаёт как 500.
object
Example
{ "code": "embed_packages_not_found", "message": "Package not found.", "data": { "status": 404 }}Не аутентифицирован. WordPress REST: rest_forbidden (status 401), если нет cookie-сессии. Cookie + X-WP-Nonce или Application Password.
object
Код WP_Error (get_error_code()), например embed_packages_not_found.
Текст WP_Error (get_error_message()).
Data WP_Error. Обычно { "status": 404 }. Ошибки ingest/materialize без status WordPress REST отдаёт как 500.
object
Example
{ "code": "embed_packages_not_found", "message": "Package not found.", "data": { "status": 404 }}Нет права manage_network (multisite) или edit_pages (одиночный сайт), либо невалидный REST nonce (rest_cookie_invalid_nonce).
object
Код WP_Error (get_error_code()), например embed_packages_not_found.
Текст WP_Error (get_error_message()).
Data WP_Error. Обычно { "status": 404 }. Ошибки ingest/materialize без status WordPress REST отдаёт как 500.
object
Example
{ "code": "embed_packages_not_found", "message": "Package not found.", "data": { "status": 404 }}Embed_packages_page_not_found — нет страницы WordPress с этим page_id; embed_packages_unknown_blog — неизвестный blog_id в сети.
object
Код WP_Error (get_error_code()), например embed_packages_not_found.
Текст WP_Error (get_error_message()).
Data WP_Error. Обычно { "status": 404 }. Ошибки ingest/materialize без status WordPress REST отдаёт как 500.
object
Example
{ "code": "embed_packages_not_found", "message": "Package not found.", "data": { "status": 404 }}