Full pages, defined in code
Create complete WordPress pages from template files. HTML maps to core blocks automatically. Blockstudio keeps the editor in sync with your codebase.
Write HTML, get blocks
Standard elements like <h1>, <p>, and <ul> map to core blocks automatically. Use the <block> tag for everything else. Any block name, any attributes, any nesting level.
Define entire page layouts in your codebase. Blockstudio parses your templates and creates real WordPress pages with real blocks, fully editable in the block editor.
<div>
<h1 blockEditingMode="contentOnly">About Us</h1>
<p>We build tools for WordPress developers.</p>
<img src="/team.jpg" alt="Our team" />
</div>
<block name="core/columns">
<block name="core/column">
<h2>Our Mission</h2>
<p>Making block development fast and simple.</p>
</block>
<block name="core/column">
<block name="blockstudio/features" layout="grid">
<h2>Our Stack</h2>
<ul>
<li>PHP and WordPress</li>
<li>Zero JavaScript</li>
</ul>
</block>
</block>
</block>Automatic sync
Pages sync to WordPress on every admin load. Change your template, the editor updates instantly.
Template locking
Lock the entire page or individual blocks. contentOnly, all, insert, or full freedom.
Keyed blocks
Assign keys so user edits persist across template updates. Sync structure, keep content.
Version controlled
Pages live as files in your theme or plugin. Track changes in Git, deploy across environments.
Any post type
Pages default to the page post type, but you can target any custom post type in page.json.
Editing modes
Set page-level defaults and override per element. Disabled, contentOnly, or default editing.
Block Bindings
Connect blocks to post meta via the WordPress Block Bindings API. Content lives in meta, survives syncs.
PHP API
Programmatic access: force sync, lock/unlock pages, get post IDs, and query registered pages.
Keyed blocks preserve content
Add a key attribute to any block. When the template changes and Blockstudio re-syncs, keyed blocks merge the new template attributes with the user's existing content. Unkeyed blocks get fully replaced.
Build evolving templates where the structure updates across deployments but client content stays intact. Perfect for marketing sites and landing pages.
<h1 key="title">About Us</h1>
<block name="core/cover" key="hero"
url="/hero.jpg">
<h2>Welcome to our company</h2>
<p>Edit this content freely.</p>
</block>
<block name="core/columns" key="team">
<block name="core/column">
<h3>Our Team</h3>
</block>
</block>{
"name": "about",
"title": "About Us",
"slug": "about",
"templateLock": "contentOnly"
}
Template locking and editing modes
Control exactly what clients can do. "templateLock": "all" prevents any changes. "contentOnly" locks structure but allows text editing. "insert" lets users edit and reorder but not add or remove blocks.
Override per element with the blockEditingMode attribute. Lock the page but make specific sections editable, or disable editing on individual blocks entirely.
<h1>Welcome to Our Product</h1>
<p>The best solution for your needs.</p>
<block name="core/cover"
blockEditingMode="disabled"
url="/static-banner.jpg">
<p>Promotional banner</p>
</block>
<block name="core/group"
blockEditingMode="default">
<h2>Customizable Section</h2>
</block>{
"name": "landing",
"title": "Landing Page",
"slug": "landing",
"templateLock": "contentOnly",
"blockEditingMode": "contentOnly"
}
The official extension kit
Premium site templates, AI system instructions, and a private Discord community. One-time purchase, lifetime updates.
- 150+ site templates
- AI system instructions
- Lifetime updates
- Private Discord community