Skip to content

Set page-to-package binding

PUT
/wp-json/wp2lms-pro/embed-packages/v1/pages/{page_id}/package
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" }'

Writes page replace meta (PagePackageReplace::save). page_id is the WordPress page ID, not blog_id and not the package id. Not a page — 404 embed_packages_page_not_found. enabled is optional, default true. If enabled=true, an existing package_id (CPT wp2lms_embed_pkg) is required, otherwise 400 embed_packages_invalid_package. alpine defaults to false. launch_path is a relative HTML path inside the package; if the key is omitted, PHP leaves the stored path (null to save). An empty path string clears the override. This is not package file upload and not page creation. Requires manage_network (multisite) or edit_pages. Cookie + X-WP-Nonce or Application Password.

page_id
required
integer
>= 1

WordPress page ID (post_type=page) the embed package is bound to. Not blog_id and not the package id. If the post is not a page — 404 embed_packages_page_not_found.

Example
128
blog_id
integer
>= 1

Network site ID (switch_to_blog). Optional: defaults to the request current blog. Not a package id and not page_id. Minimum 1; on a single site it must match the current site — otherwise 400 embed_packages_invalid_blog. In a network an unknown site or a site from another network is 404 embed_packages_unknown_blog.

Example
1
Media typeapplication/json
object
enabled

Enable replace. Optional: if the key is missing, PHP sets true. When true, a valid package_id is required.

boolean
package_id

CPT wp2lms_embed_pkg ID. Required when enabled=true (otherwise 400 embed_packages_invalid_package). When enabled=false, 0 is allowed.

integer
alpine

Alpine wiring. Optional, default false (! empty). When enabled=false PHP clears alpine meta.

boolean
launch_path

Relative .html/.htm inside the package. If the key is omitted, the stored path is left unchanged. Empty/unsafe string clears the override.

string
Example
{
"enabled": true,
"package_id": 42,
"alpine": false,
"launch_path": "about.html"
}

Binding saved. Same shape as GET; if the package is not yet resolved, effective_launch_path is an empty string.

Media typeapplication/json
object
page_id

WordPress page ID (post_type=page) the package is bound to. Not blog_id and not the package id.

integer
enabled

Whether replace is enabled (_wp2_embed_replace_with_package = “1”).

boolean
package_id

CPT package ID from page meta (0 if unset).

integer
alpine

Request Alpine wiring on replace (_wp2_embed_replace_alpine).

boolean
launch_path

Per-page launch override (_wp2_embed_replace_launch_path), without the package default. Empty — no override.

string
effective_launch_path

Actual launch HTML: page override or package meta.launch_path. On GET when unresolved — override only; on PUT when unresolved — empty string.

string
resolved

Package ID when replace is enabled, the package is published, and the launch file is readable on disk; otherwise JSON null. Not a URL object.

integer
nullable
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 but package_id ≤ 0 or it is not the package CPT; embed_packages_invalid_blog — invalid blog_id.

Media typeapplication/json
object
code

WP_Error code (get_error_code()), e.g. embed_packages_not_found.

string
message

WP_Error text (get_error_message()).

string
data

WP_Error data. Usually { "status": 404 }. Ingest/materialize errors without status are returned by WordPress REST as 500.

object
Example
{
"code": "embed_packages_not_found",
"message": "Package not found.",
"data": {
"status": 404
}
}

Not authenticated. WordPress REST: rest_forbidden (status 401) when there is no cookie session. Cookie + X-WP-Nonce or Application Password.

Media typeapplication/json
object
code

WP_Error code (get_error_code()), e.g. embed_packages_not_found.

string
message

WP_Error text (get_error_message()).

string
data

WP_Error data. Usually { "status": 404 }. Ingest/materialize errors without status are returned by WordPress REST as 500.

object
Example
{
"code": "embed_packages_not_found",
"message": "Package not found.",
"data": {
"status": 404
}
}

Missing manage_network (multisite) or edit_pages (single site), or invalid REST nonce (rest_cookie_invalid_nonce).

Media typeapplication/json
object
code

WP_Error code (get_error_code()), e.g. embed_packages_not_found.

string
message

WP_Error text (get_error_message()).

string
data

WP_Error data. Usually { "status": 404 }. Ingest/materialize errors without status are returned by WordPress REST as 500.

object
Example
{
"code": "embed_packages_not_found",
"message": "Package not found.",
"data": {
"status": 404
}
}

Embed_packages_page_not_found — no WordPress page with this page_id; embed_packages_unknown_blog — unknown blog_id in the network.

Media typeapplication/json
object
code

WP_Error code (get_error_code()), e.g. embed_packages_not_found.

string
message

WP_Error text (get_error_message()).

string
data

WP_Error data. Usually { "status": 404 }. Ingest/materialize errors without status are returned by WordPress REST as 500.

object
Example
{
"code": "embed_packages_not_found",
"message": "Package not found.",
"data": {
"status": 404
}
}