Создать страницы WordPress из пакета
const url = 'https://example.com/wp-json/wp2lms-pro/embed-packages/v1/packages/42/materialize-pages?blog_id=1';const options = { method: 'POST', headers: {'X-WP-Nonce': '<X-WP-Nonce>', 'Content-Type': 'application/json'}, body: '{"page_status":"publish","alpine":false}'};
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/wp2lms-pro/embed-packages/v1/packages/42/materialize-pages?blog_id=1' \ --header 'Content-Type: application/json' \ --header 'X-WP-Nonce: <X-WP-Nonce>' \ --data '{ "page_status": "publish", "alpine": false }'Для многостраничного web-пакета (meta.is_multipage и непустой индекс meta.pages) создаёт новые записи post_type=page и сразу включает подмену (PagePackageReplace::save). Это не заливка ZIP и не обновление уже существующих страниц: всегда wp_insert_post. SCORM/xAPI и одностраничный web — 500 not_multipage.
page_status необязателен, по умолчанию publish; допустимы publish / draft / private, иное → publish. alpine необязателен, по умолчанию false (! empty). Заголовок/slug страницы берутся из индекса HTML пакета (title файла или имя без расширения).
Не пакет — 404 embed_packages_not_found. Если после обхода индекса ни одной страницы не вышло — 500 no_pages_created.
Нужно manage_network (multisite) или edit_pages. Cookie + X-WP-Nonce или Application Password.
Authorizations
Заголовок раздела «Authorizations»Parameters
Заголовок раздела «Parameters»Path Parameters
Заголовок раздела «Path Parameters»ID записи CPT wp2lms_embed_pkg (поле id в payload). Не blog_id и не page_id. Несуществующий id или другой post_type — 404 embed_packages_not_found.
Example
42Query 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
Post_status создаваемых страниц WordPress. Необязательно, по умолчанию publish. Иное → publish.
Писать meta _wp2_embed_replace_alpine на созданных страницах. Необязательно, по умолчанию false (! empty).
Example
{ "page_status": "publish", "alpine": false}Responses
Заголовок раздела «Responses»Страницы созданы и привязаны к пакету. Тело — pages[] плюс package_id и blog_id.
object
Созданные страницы WordPress с привязкой к пакету.
object
ID созданной страницы WordPress (post_type=page). Не ID пакета.
Заголовок страницы из индекса HTML пакета (или имя файла).
post_name — sanitize_title от имени HTML без расширения.
Относительный HTML в пакете, записанный в meta страницы как override запуска.
ID пакета из path (тот же {id}).
ID сайта после switch (get_current_blog_id()).
Example
{ "pages": [ { "page_id": 128, "title": "Главная", "slug": "index", "launch_path": "index.html" }, { "page_id": 129, "title": "О курсе", "slug": "about", "launch_path": "about.html" } ], "package_id": 42, "blog_id": 1}Embed_packages_invalid_blog — blog_id < 1 или на одиночном сайте не совпадает с текущим.
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_not_found — нет пакета с этим 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 }}WP_Error без HTTP-status — not_multipage (пакет не web-multipage / нет индекса), no_pages_created, invalid_package, либо сбой wp_insert_post. WordPress REST отдаёт такие ошибки как 500.
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 }}