Theme bridge ability reference
Reference for the GoBuildWP Pro 1.12.4 source. Installed schemas and policy remain authoritative.
The theme bridge lets an agent read and change the Customizer settings a theme registers, and find the block templates a block theme uses, on themes that have no dedicated GoBuildWP Pro module. This Theme bridge ability reference covers support for any block theme and for Blocksy, Neve and WoodMart. Editing a block theme's templates, template parts, global styles and navigation does not need it: those are GoBuildWP Free's block theme abilities.
Read-only, write and destructive groups describe the source annotations. They do not establish a minimum safety profile, human approval or undo support. Those controls are separate: check the installed ability, the connected user and the active site policy before calling it. A read can still return sensitive data. These pages are not evidence that every operation passed an end-to-end runtime test.
What Theme bridge needs before these load
GoBuildWP Pro, with a block theme active, or Blocksy, Neve or WoodMart as the active theme or its parent, recognised from the stylesheet and template slugs. There is no version floor. On any other theme the calls return theme_bridge_not_available (HTTP 409). Each call needs manage_options, and a write also passes the capability each Customizer setting declares. The module boots the Customizer itself on REST and MCP requests; a theme whose customize_register hook throws gives theme_bridge_customizer_boot_failed. Pro ships build-page skills for block themes, Blocksy, Neve and WoodMart.
- Theme bridge editions
- free, pro, premium
- Agent skills shipped
theme-bridge-build-page,blocksy-build-page,neve-build-page,woodmart-build-page
What the bridge refuses to touch
Writes are limited to theme_mod settings registered with WordPress's Customizer. Option-backed settings are rejected, and so is any setting whose ID looks like an API key, secret, token, password, licence, custom CSS or code, script, tracking or analytics: those are redacted in listings and read-only. Listings also omit values larger than 8 KiB.
theme-bridge-check-setup always reports vendor_private_crud as false and names what is out of bounds for the detected theme: Blocksy Content Blocks and Conditions, Neve Custom Layouts and Hooks, and WoodMart's Theme Settings, Header Builder, Layout Builder and Slider. Its instructions tell the agent not to reach for execute-php or a guessed option write instead.
How a settings patch is checked and undone
One patch carries up to 50 keys. Each value must be JSON-shaped, no deeper than four levels, no more than 100 items per array and 8 KiB serialised, without NUL bytes, and must then pass the setting's own validate and sanitize. Keys that fail come back under rejected with a reason while the rest are saved; values already in place are listed as unchanged. Concurrent writes wait on a lock and give theme_bridge_lock_busy if it stays held. The change ledger snapshots the theme_mods_<stylesheet> row, so wppilot/rollback-change restores it.
theme-bridge-list-block-assets lists templates and template parts without their content. Rows with a wp_id above zero are database copies that the block-editor queue can edit; rows with wp_id 0 exist as theme files and are for discovery.
Representative call sequence
This sequence describes the documented calls and checks to perform. It is not a recorded result from an installed WordPress site. Inspect returned errors and partial results, then verify the saved values and affected output before proceeding.
Change the accent colour on a Neve site.
- 01
wppilot/theme-bridge-check-setupConfirms the neve adapter is active and how many theme_mod settings are writable. - 02
wppilot/theme-bridge-list-customizer-settingsSearched for colour settings with writable_only set, returning each ID, current value and default. - 03
wppilot/theme-bridge-update-customizer-settingsSaves the new value and reports it under changed, or under rejected with the Customizer's reason. - 04
wppilot/rollback-changeRestores the previous theme mods if the result looks wrong.
Theme bridge in practice
How the theme bridge decides which theme it is talking to
The bridge looks at two slugs, the active theme's stylesheet and its template, and picks an adapter from them. If either is blocksy, neve or woodmart, that adapter wins, so a child theme of Blocksy is handled as Blocksy. Only when neither matches does it fall back to the block-theme adapter, and only if WordPress reports a block theme. A classic theme that is none of the three gets theme_bridge_not_available with HTTP 409. A parent theme whose folder has been renamed, as white-labelled agency builds sometimes are, is not recognised by slug and lands in the same refusal.
wppilot/theme-bridge-check-setup reports the adapter, whether a child theme is active, and two counts: how many theme_mod settings the Customizer registered and how many of them the connected user may write. A low writable count on a WoodMart site does not mean something is broken: WoodMart's Theme Settings panel is outside the bridge, so only what WoodMart registers in the Customizer appears.
Theme mods are stored per active stylesheet. On a child theme the bridge reads and writes the child's row, so switching between parent and child, or activating a different child, shows a different set of values even though the settings have the same IDs.
Searching the Customizer inventory without flooding the conversation
A theme can register a great many Customizer settings, so wppilot/theme-bridge-list-customizer-settings is built to be searched rather than dumped. query takes up to 100 characters and matches anywhere in a setting ID, ignoring case; writable_only hides everything the agent may not change, and results come 50 at a time by default (up to 100) with offset, total and has_more for paging. Searching for a word such as color, header or footer with writable_only on is usually the fastest route to the right ID.
Each row explains itself. storage and transport say how the theme registered the setting; capability is what WordPress requires to change it; value_bytes and value_truncated show when a large value was left out; default gives the theme's starting value, which is what a person usually means by put it back; redacted marks a value hidden because its ID looks sensitive; and writable with write_block_reason says whether the update call will accept it. Only IDs listed as writable may be sent.
For block themes, wppilot/theme-bridge-list-block-assets takes the same query, offset and limit, plus type (all, template or template_part) and source (theme for files the theme ships, custom for copies stored in the database). Each row reports has_theme_file and, for template parts, the area such as header or footer. A custom row that also has a theme file is an edited copy overriding the shipped one, and that copy is what an edit would change. The edit itself is made with GoBuildWP Free's block theme abilities, such as wppilot/update-template, not through the bridge.
What a theme bridge save runs, and what to look at afterwards
For every key in the patch, wppilot/theme-bridge-update-customizer-settings runs the setting's own validate step and then its sanitize step, exactly as the Customizer would. A setting that returns an error is rejected with that message; one whose sanitizer returns nothing is rejected as theme_bridge_sanitize_rejected; an unregistered ID gives theme_bridge_unknown_setting and a blocked one theme_bridge_setting_read_only. Two problems stop the whole patch instead of one key: an empty settings object (theme_bridge_invalid_input) and more than 50 keys (theme_bridge_batch_too_large).
Accepted values are saved one setting at a time through the Customizer's own save routine, and the values map in the result holds what was stored after sanitising, which can differ from what was sent, for example when a sanitizer normalises a colour or clamps a number. Compare the two before reporting success. The bridge does not create a Customizer changeset, so the change is live at once and does not appear as a draft or scheduled change in the Customizer.
Some themes regenerate stylesheets or caches when the Customizer is published. Whether a given theme does that from an individual setting save has to be checked on a real site: load a page logged out after the change, and if the old styling persists, clear the theme's or host's cache before assuming the save failed.
Theme bridge permissions, profile and recovery
The update call is an ordinary write, not a destructive one, so the confirmation gate does not stop it; under the Read Only safety profile only the three reads load. Two agents writing at once queue on a per-site lock around the theme mods row, and theme_bridge_lock_busy means the other write held it for too long; retry once it has finished.
Because the change ledger snapshots the whole theme mods row before each save, a rollback restores every Customizer value of that theme to its earlier state, including values someone changed by hand in the meantime. For a single wrong value, sending the old value or the default back through the update call is the narrower fix.
Questions about Theme bridge
A setting shows up in the list but is marked not writable. Why?
Its row carries write_block_reason: either its ID matches the sensitive patterns (keys, licences, code, CSS, tracking) or the connected user lacks the capability the theme set for it.
Can the bridge edit my block theme's header?
Not by itself; it only finds the parts. GoBuildWP Free's block theme abilities edit them: wppilot/update-template with the wp_template_part type saves the header part, and the first edit of a part that exists only as a theme file creates a database customization and leaves the file unchanged. wppilot/build-site-header, also in Free, builds a whole site header and checks the served pages.
Theme bridge reads
| Ability | What it does |
|---|---|
wppilot/theme-bridge-check-setupCheck Theme Bridge Setup | Detects the active block theme, Blocksy, Neve, or WoodMart; reports the exact live Customizer theme_mod and block-template capabilities; and states which vendor-owned premium surfaces remain fail-closed. Call this before every other theme-bridge ability. |
wppilot/theme-bridge-list-block-assetsList Block Theme Assets | Lists database overrides and theme-file templates/template parts for the active block theme without returning their potentially large content. Database-backed rows include wp_id targets that can be inspected and changed through the base GoBuildWP Gutenberg review queue. |
wppilot/theme-bridge-list-customizer-settingsList Theme Customizer Settings | Returns a bounded, searchable inventory of live theme_mod settings registered by the active theme and WordPress Customizer. Values larger than 8 KiB are omitted, and credential/code/licensing settings are always redacted and read-only. |
Theme bridge writes
| Ability | What it does |
|---|---|
wppilot/theme-bridge-update-customizer-settingsUpdate Theme Customizer Settings | Partially updates at most 50 live, registered theme_mod settings through each WP_Customize_Setting validation and sanitization contract. Unknown, option-backed, sensitive, oversized, or unauthorized settings are rejected without arbitrary option writes. |
For the task-level view of Theme bridge, with worked requests and what to check afterwards, see WordPress Block Themes integration page.