Oxygen Builder Reference
Technical documentation for using Respira with Oxygen Builder: component trees, targeting strategies, and safe editing workflows.
Oxygen Builder Reference
Technical documentation for using Respira with Oxygen Builder.
About Oxygen
Oxygen Builder is a professional-grade WordPress site builder that generates clean, bloat-free code. It completely replaces your theme and offers full site building capabilities with over 60 components.
Respira builds native, editable elements on both Oxygen Classic and Oxygen 6. On Oxygen 6 it emits real OxygenElements (and the rich EssentialElements when the "Breakdance Elements for Oxygen" add-on is active), not a single HTML block. Oxygen stores its tree in post meta, so writes are verified by reading the database rather than the object cache.
Prompting for great results on Oxygen
For the full prompting guide, see Get Great Results: How to Prompt. Oxygen has one failure mode worth naming:
- Ask for native Oxygen components, not a single HTML/code block. The most common bad result on Oxygen is the agent retreating to one big HTML or code block instead of building real Oxygen components. The page then is not editable in Oxygen.
- Prime once at the start. "This is an Oxygen site. Build with native Oxygen components, not a code block. Read my site first, then give me a draft I can review."
Oxygen 6: native components (fixed in the 7.4.x line)
Older Respira builds on Oxygen 6 sometimes fell back to a single HTML or code block instead of native Oxygen elements. That is fixed as of the 7.4.x releases. Respira now hands the agent the native Oxygen 6 element catalog on connect and builds real, editable OxygenElements (sections, headings, text, buttons, images), including the rich EssentialElements when the "Breakdance Elements for Oxygen" add-on is active. If you are on an older plugin and still get one big code block, update to the latest release and re-prime the agent to use native Oxygen components.
Data Structure
Oxygen stores page layouts as serialized component trees in post meta. Each component has a unique ID and nested children:
{
"id": 1,
"name": "ct_section",
"options": {
"ct_id": 1,
"selector": "section-1-123"
},
"children": [
{
"id": 2,
"name": "ct_headline",
"options": {
"ct_content": "Welcome to Our Site",
"selector": "headline-2-123"
}
},
{
"id": 3,
"name": "ct_link_button",
"options": {
"ct_content": "Get Started",
"url": "/contact"
}
}
]
}
Module Identification
By Selector (Recommended)
Each Oxygen element has a unique selector. Target it with:
{ "admin_label": "headline-2-123" }
By Custom Class
Add a custom class in Oxygen's Advanced tab:
{ "admin_label": "hero-cta-button" }
By Path
{ "path": "components[0].children[1]" }
By Type and Content
{ "type": "ct_link_button", "match_content": "Get Started" }
Common Components
| Component | Type | Key Options |
|---|---|---|
| Headline | ct_headline | ct_content, tag |
| Text Block | ct_text_block | ct_content |
| Button | ct_link_button | ct_content, url |
| Image | ct_image | src, alt |
| Icon | ct_icon | icon_id |
| Section | ct_section | layout settings |
| Columns | ct_columns | column configuration |
| Div | ct_div_block | generic container |
| Link | ct_link | url, target |
| Code Block | ct_code_block | code_php, code_css, code_js |
Example Prompts for Oxygen
Content Updates:
- "Update the Oxygen component labeled 'Footer Email' to support@example.com"
- "Change the headline selector 'headline-2-123' to 'New Headline'"
- "Replace the CTA button link with /pricing"
Structure Queries:
- "Extract Oxygen structure for the homepage"
- "List all buttons on page 42"
- "Show me the component tree for this page"
Bulk Updates:
- "Find all ct_link_button components with 'Learn More' and change to 'Get Started'"
- "Update the copyright year in all text blocks"
- "Change all H3 headlines to H2"
Templates & Reusable Parts
Oxygen templates and reusable parts are editable:
- "List all Oxygen templates" → Shows template library
- "Update the header template phone number" → Changes it site-wide
Inner Content & Gutenberg
Oxygen can include Gutenberg blocks via Inner Content. Respira can edit both the Oxygen structure and embedded Gutenberg content.
Limitations
- Conditions: Oxygen conditions (visibility rules) are preserved but need the builder
- Dynamic data: Dynamic data connections are preserved but not directly editable
- Global styles: Oxygen's global colors and stylesheets need the builder interface
- Custom PHP: Code blocks with PHP are preserved but not editable through Respira
When to Use This Tool
- Quick content updates - Change headlines, button text, or links
- Batch editing - Update the same content across multiple templates
- SEO workflows - Fix heading structure or missing content
- Client maintenance - Make content changes without needing Oxygen knowledge
See Also
- wordpress_extract_builder_content - View page structure
- wordpress_update_module - Update specific components
- wordpress_inject_builder_content - Replace entire structure
- Page Builder Overview - Compare all supported builders
v5.2.0 Elemental — Fix
ct_template Detection
Fixed: Oxygen templates using only ct_builder_json (without ct_builder_shortcodes) were not detected by is_builder_used(). Respira now checks both meta keys, matching the logic already used in content extraction.
Support Level
Oxygen has Smart Defaults support — element operations work via the generic tree utility.
Recent capabilities (7.4.x)
- Oxygen 6 builds native elements, not one HTML block. Respira hands the agent the native Oxygen 6 element catalog on connect and builds real, editable
OxygenElements(sections, headings, text, buttons, images), including the richEssentialElementswhen the "Breakdance Elements for Oxygen" add-on is active. Sites without the add-on keep the safe core-only mapping. build_pageaccepts Oxygen 6's real elements. Multi-element types the builder advertises (Columns, Column, Div, Grid, Accordion, Tabs, TextLink and more) validate against the same catalogget_builder_inforeports, so a structured build is no longer refused with a 422 and forced into a code block.- Writes are verified against the database, not the object cache, so a persistent object cache cannot confirm a write that never reached the database.