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.

pages/docs/pages.json
{
  "collection": "docs",
  "title": "Documentation",
  "postType": "bs_docs",
  "defaults": {
    "postStatus": "publish",
    "templateLock": "contentOnly"
  }
}

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.

index.php
<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.

index.php
<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>

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.

index.php
<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>

PHP API

Access trees, children, metadata, sync, locking, and IDs programmatically.

Plus

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