Full pages, defined in code Templates and Markdown, kept in sync with WordPress.
Collections from files
Define pages.json and let Blockstudio discover every source below it. Nested paths become nested pages, defaults apply to the collection, and missing parents can be generated.
Use collections for documentation, knowledge bases, landing pages, or external content that should still become native WordPress pages.
{
"collection": "docs",
"title": "Documentation",
"postType": "bs_docs",
"defaults": {
"postStatus": "publish",
"templateLock": "contentOnly"
}
}---
name: docs-install
title: Installation
path: guide/install
---
# Installation
Install Blockstudio from this Markdown page.Automatic sync
Changes to manifests, loaders, layouts, and sources are detected automatically.
Markdown sources
Use index.md with frontmatter or pair page.json with Markdown content.
Template locking
Lock pages or individual blocks with contentOnly, all, or insert.
Keyed blocks
Keep user content while templates evolve.
Version controlled
Track page files in Git and deploy them across environments.
Collections and post types
Collections can register dedicated hierarchical post types.
Editing modes
Set page defaults and override individual elements.
Block Bindings
Connect blocks to post meta so content survives sync.
Write HTML, get blocks
Standard elements such as <h1>, <p>, and <ul> map to core blocks. Use <block> for every other block name and nesting level.
Blockstudio parses complete page layouts into real, editable WordPress blocks.
<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></block>
<block name="core/column"><h2>Our Stack</h2></block>
</block>Keyed blocks preserve content
Add key to any block. On re-sync, keyed blocks merge template attributes with existing user content while unkeyed blocks are replaced.
Evolve structure across deployments while client content remains intact.
<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
"all" prevents changes, "contentOnly" locks structure while allowing text edits, and "insert" allows editing/reordering without adding or removing.
Override any element with blockEditingMode to make a locked page selectively editable or disable an individual block.
<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"
}PHP API
Access trees, children, metadata, sync, locking, and IDs programmatically.
The official extension kit
Premium site templates, AI system instructions, and a private Discord community. One-time purchase, lifetime updates.
- 450+ site templates
- AI system instructions
- Lifetime updates
- Private Discord community