Point-and-click editing for WordPress sites converted from hand-written or AI-generated HTML. Click any text, image, link or card on the real page and change it — the page's markup stays byte-for-byte identical to the design it came from, because nothing is ever re-structured into blocks or widgets.
Visual Edit Lite edits raw HTML in place, so it needs a theme that has raw
HTML: one whose pages are markup rather than blocks, and which declares what
that markup means through the clara_ve_theme_contract filter.
That contract is open and documented. Everything a theme must provide is
written down in docs/developer/theme-requirements.md
— a front-page pattern, a handful of template parts, a key marker per block,
and per-key structural anchors. Any theme can satisfy it, hand-written or
generated, and no part of it depends on a service.
In practice most such themes are produced by a converter that turns a finished HTML site — one built in Lovable, Bolt, aidesigner.ai, v0.dev, Claude design, or written by hand — into a WordPress theme with the original markup intact. That converter is a separate project; this repository is the editor.
Install the plugin on a theme that declares the contract and everything below works. Install it on one that does not and the editing screens still load, but the canvas has nothing it recognises to edit.
It is not a page builder and does not work with one. It is not for Gutenberg block themes, Elementor, Divi, Beaver Builder, or ordinary WordPress themes. Those store your page as their own data structure — blocks, widgets, shortcodes — and render markup from it. This plugin does the opposite: it edits the raw HTML the theme already carries, in place. A theme that has no raw HTML to edit gives it nothing to work on.
Parts of the plugin that do not depend on the theme — forms, email
delivery, mailing lists, the SEO record and emitter, redirects, structured
data and llms.txt — will still work anywhere. The editing canvas is the part
that needs the converted theme.
Editing
- Click-to-edit text, headings, links, images and video, directly on the live page, at desktop / tablet / mobile widths
- Typography, colour, spacing and layout controls per element, without touching the markup
- Edit CSS
::before/::afterornaments, or promote one into real editable text - Manage any set of repeating cards or list items — reorder, edit, add, remove — in one step
- Per-page version history with restore, kept independently for every page — the last ten saves plus the Original, which can always be restored
Content
- Connect a designed HTML form by clicking; the form's own markup is never rebuilt. Submissions are stored in WordPress and emailed
- Layered anti-spam: honeypot, minimum fill time, per-IP rate limiting that survives a CDN, and optional Akismet
- Email delivery through your server, SMTP, or the Brevo / SendGrid / Postmark / Mailgun APIs — no separate SMTP plugin
- Mailing-list signup with double opt-in and a subscriber consent record
- Blog listings that repeat the design's own card markup for real WordPress posts, with "load more"
Search and AI readiness
- Title, description, canonical, Open Graph and robots per page, edited from a small panel in the editor
- Writes through to Yoast SEO or Rank Math when either is installed, and emits the tags itself when neither is
- schema.org structured data,
llms.txt, and AI-crawler rules — all extracted from the site's own content, never invented - A read-only readiness report that names problems and stops there
Moving a site
- Import a converted theme's content bundle — pages, posts, menus, media, forms, SEO records
- Import reviews everything first and never overwrites work you have already done — conflicts are reported and left alone
- Install and activate your converted theme.
- In WordPress: Plugins → Add New, search for "Visual Edit Lite", Install Now, Activate.
- Follow the theme's setup screen to import the site's content.
The theme and the plugin are two separate files. A theme ZIP never contains the plugin.
This is the free edition, distributed through the WordPress.org plugin directory. It has no licence key, no trial and no locked buttons: what it does not have, it does not contain.
Visual Edit Pro adds an AI assistant that edits pages conversationally, AI image editing and video generation, Cloudflare Turnstile, one-click theme export, and a 300-entry visible save history. It is sold separately and is not required for anything Lite does. Both editions store their data under the same names, so either one reads what the other wrote — and they cannot run at the same time: with Pro active, Lite switches itself off and says so.
| WordPress | 6.6 or newer |
| PHP | 7.4 or newer |
| Capabilities | edit_theme_options and unfiltered_html |
| Theme | any theme declaring clara_ve_theme_contract (see theme requirements) |
Editing round-trips raw HTML, so it requires unfiltered_html — the
capability WordPress uses to mean "this person is trusted with markup". On
multisite that capability belongs to Super Admins only by default, so
ordinary site administrators will not see the editor.
No build step, no Composer, no npm. The plugin has no dependencies.
Full documentation is in docs/.
- New here? Start with Getting started.
- Using the editor day to day? The site owner's guide.
- Integrating or extending? Developer reference.
GPL-2.0-or-later. See LICENSE.
The editor is open source on purpose. It is delivered to every site it converts, so it is code you can read, audit and keep — which matters for a plugin that handles your markup, your form submissions and your subscriber list. The converter is a separate project; this repository is the editor, and its theme contract is documented so anyone can build against it.
tools/verify.sh
Builds the package, boots a throwaway WordPress in Docker, installs the
extracted ZIP under its real slug, installs the official
Plugin Check if it is not
already there, runs it across every category, and asserts the Lite-specific
behaviour (no licence gate, no Pro classes, no AI routes, history listing ten
plus the Original). Exits non-zero on any failure; --keep leaves the site up
on localhost:8897. Offline, point it at a local copy:
PLUGIN_CHECK_ZIP=/path/to/plugin-check.zip tools/verify.sh.
tools/release.sh # or: tools/release.sh X.Y.Z
Verifies, pushes, builds, tags (bare version — no v prefix), publishes the
GitHub Release with the ZIP attached, then downloads the published asset
back and diffs it against a fresh build. One command, because "push now,
release later" is how the download stops matching the code.
Release notes are read from the matching = X.Y.Z = block in readme.txt,
so the changelog has one home.
php tools/make-pot.php
Rewrites languages/visual-edit-lite.pot from the source. Run it after
changing any translatable string.