Description
Bindery gives any WordPress theme a clean, locked, edit-in-place experience — without a page builder and without giving up hand-written markup.
Custom and AI-built themes are fast and clean, but content-hostile: a client can’t change a headline or a phone number without a developer. Page builders fix that but bloat your markup and your editing screen. Bindery is the missing middle — you decide what a client may change, and they edit only that, right on the live page.
Everything is built on native WordPress primitives (the Block Bindings API, block.json, the REST API), so Bindery never owns your markup and adds no builder lock-in.
What it does
- Edit on the live page. A floating “✎ Edit page” button turns the regions you declared into inline-editable text. Click, type, click away — saved.
- No-code setup. From the Bindery settings screen, tick which HTML tags (headings, paragraphs, lists, quotes…) become editable site-wide. That’s it.
- Or mark regions in code. A one-line template helper (
bindery_attrs()) makes a single element editable; template tags render declared fields anywhere; eight ready-made blocks cover richer content. - Locked by design. Only declared regions are editable. Layout, structure and anything unmarked stay untouchable — clients can’t break the design.
- Multilingual. Every field stores a value per language; unedited languages fall back to your code default.
- Revision history + one-click restore for every edit.
- Export / import all content as JSON for staging production migrations (also via WP-CLI).
- Theme-portable. Verified across Astra, OceanWP, Neve, the default Twenty-* themes and block (FSE) themes; the bundled blocks adapt to your theme’s colours.
Five ways to make content editable
- Settings page — choose editable tags, zero code.
- Attribute helper —
bindery_attrs()marks one element editable in your template. - Blocks — drop a Bindery block into the block editor.
- Template tags —
bindery_field()/bindery_value()render a declared field in PHP. - Auto mode — make all existing page text editable automatically.
Built for developers, too
A small DI container with four filter-driven seams (field types, value sources, storage adapters, locale providers). Values live in their own table, never in your markup; writes are whitelisted to the fields actually on the page and sanitized per type; output is escaped per type. WP-CLI commands for export/import/history/restore. Full API in the bundled DEVELOPERS.md and README.md.
Screenshots





Blocks
This plugin provides 8 blocks.
- Bindery Slider An auto-advancing slider whose slides are a Bindery repeater — edit slides inline per language; the carousel runs from the block's own viewScript on the front end.
- Bindery Icon An editable icon — the client picks one from a curated set; stored per language and rendered as inline SVG.
- Bindery Cards An editable grid of cards backed by a Bindery repeater field — clients add, remove, reorder and edit rows inline, per language.
- Bindery Image An editable image — the client picks one from the media library inline; stored per language and rendered from the attachment.
- Bindery Button An editable call-to-action button — label and link, both stored per language and rendered as a real anchor.
- Bindery Editable Text A text region whose content is resolved from a Bindery field — clean markup the developer controls, editable only where allowed.
- Bindery Section A full-width section with an editable background image and any blocks inside — ideal for hero areas.
- Bindery Form A contact/lead form — editable labels per language, submissions stored in wp-admin and emailed. Spam-protected.
Installation
- Upload the
binderyfolder to/wp-content/plugins/, or install the ZIP from Plugins Add New Upload Plugin. - Activate Bindery through the Plugins screen.
- Open Bindery in the admin menu, turn on inline editing and tick which elements are editable.
- Visit any page on the front end and click ✎ Edit page to start editing.
No build step or Composer is required to use the plugin — the compiled assets ship in the package.
FAQ
-
Does Bindery change my theme’s markup?
-
No. It resolves a value (a client’s saved override, or your code default) and outputs your own clean markup. Editable regions are marked with
data-*attributes that are only emitted for logged-in users who can edit; visitors get clean HTML. -
Do I have to write code?
-
No. With auto content editing enabled on the settings page, your existing page text becomes editable with no code at all. Code helpers exist for developers who want precise, per-region control.
-
Where is the content stored?
-
In a dedicated table (
wp_bindery_values), one row per field/page/language — never mixed into your post markup. Your code default is never stored, so improving it in code reaches every site that hasn’t overridden the field. -
Can a client break the layout?
-
No. Only the regions you declared editable can be changed. Everything else — structure, classes, layout — is untouchable.
-
Is it multilingual?
-
Yes. Each field stores a value per language, with a language switcher in the edit overlay. Plug in WPML/Polylang via a filter, or use the built-in provider.
-
Can I move content between sites?
-
Yes — export/import all values as JSON from the settings page or with
wp bindery export/wp bindery import. -
Does it work with page builders?
-
Bindery is an alternative to page builders, not an add-on. It works with any classic or block theme and the native block editor.
-
Where is the source code for the compiled JavaScript?
-
The
/builddirectory shipped with the plugin (block editor scripts, the settings screen, and the front-end overlay’s compiled entry points) is generated from the human-readable source in/src-jsusing@wordpress/scriptsand the includedwebpack.config.js. Both the full source and the build configuration are published in the plugin’s public repository:https://github.com/dumitrubalaban/bindery
Run
npm install && npm run buildfrom the repository root to reproduce/buildfrom/src-js.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Bindery” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Bindery” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
0.1.0
- Initial public release.
- No-code settings page: choose which element types are client-editable, per post type.
- Front-end inline edit overlay with per-language switching, accent colour and strict mode.
- Automatic content editing: make existing page text editable without declaring fields.
- Attribute helper and template tags for precise, code-declared editable regions.
- Eight self-contained blocks (editable text, cards, slider, image, button, icon, form, section) plus block patterns.
- Per-language values on a custom table; value precedence (saved override, else code default).
- Whitelisted, capability-gated REST editing; per-type sanitization and escaping.
- Revision history with one-click restore; JSON export/import (settings page and WP-CLI).
- Per-request value caching, multisite-aware activation, accessibility pass.
