3.3.0 taught the AI to understand your site. 3.4.0 widens what it can reach: your theme, your command line, and SVG uploads: plus 50 ready-made templates so you’re never starting from a blank page.
Most of this release is about meeting WordPress where it actually lives. Not every site runs Elementor. Not every change happens in a page builder. Here’s the tour.
🎨 A new Themes domain
The biggest addition is a Themes sub-tab on the Tools screen, theme integrations built on the same clean two-dispatcher pattern as the ACF integration (one Read tool, one Write tool, each bundling internal operations). It’s a shared base, so new framework packs are cheap to add.
Active Theme (theme-read / theme-write) works for any active theme:
get-theme-context: the active and parent theme, the detected framework, whether it’s a block theme, theme supports, registered menu locations, and whether a child theme already exists. One call and the AI knows what it’s working with.get-mods/set-mods: read and writetheme_modvalues (structural keys like menu locations are refused, so nothing important gets clobbered).create-child-theme: scaffold astyle.css+functions.phpand activate a child of the active parent, so the agent can then safely edit theme files through the Filesystem tools. It requiresconfirm: true, is idempotent, and refuses to build a grandchild.
Astra (astra-read / astra-write) registers automatically when Astra is the active theme: generic get-settings / update-settings over a curated allowlist (colors, typography, layout, header/footer), mirroring the WordPress Settings domain.
Spectra Blocks (spectra-read / spectra-write) registers when the Spectra plugin is active, a discover → inspect → act layer that mirrors the Elementor widget catalog. list-blocks gives you the site’s real Spectra blocks, and get-block-schema reads a block’s real attribute names and defaults from Spectra’s own source (no guessing, a wrong attribute name silently does nothing, so this matters), plus a ready-to-use example. add-block inserts a block with a proper block_id; you build the rest of the page with the existing Gutenberg tools.
Reads are on by default; the write dispatchers ship disabled-by-default. Kadence and GeneratePress packs build on the same base next.
⌨️ WP-CLI tools
Your AI can now run wp commands. run-wp-cli executes synchronously and returns stdout, stderr, and the exit code. For long migrations or bulk jobs, dispatch-wp-cli kicks the command off as a detached background process you poll with get-wp-cli-job and list-wp-cli-jobs.
Two execution modes are supported automatically: in-process via WP_CLI::runcommand() when you’re connected over the WP-CLI stdio transport (no shell at all), or a proc_open shell path (argv array, no shell interpolation) when an admin configures a wp base command for HTTP/proxy connections.
This is a powerful surface, so it’s fenced in: a command blocklist refuses eval, shell, server, raw db query/import, config set, package install, and injection/retarget flags like --exec and --path; a quote-aware, Windows-path-safe tokenizer parses commands; all four tools require manage_options, ship disabled-by-default, and every run is recorded to the change ledger from 3.3.0.
🖼️ SVG Uploads, done safely
Sites without Elementor had no clean way to allow SVG uploads. 3.4.0 adds a self-contained SVG Uploads module (opt-in, on the Modules tab). When enabled it:
- registers the
svgmime for users who can upload files (or admins only, your choice), - fixes
wp_check_filetype_and_ext()so the real-content MIME check doesn’t reject SVGs on the REST / sideload path, the exact piece most SVG plugins miss, which is why programmatic uploads (and the MCP media tools) so often fail, and - sanitizes every uploaded SVG with the bundled
enshrined/svg-sanitizelibrary, scripts, event handlers,javascript:URIs, and external references are stripped. It’s fail-closed: an SVG that can’t be cleaned is rejected.
Off by default given the security surface, but one toggle away when you need it.
🧰 50 starter templates (Pro)
Pro now includes a template library of 50 designs across ten verticals, bakeries, salons, clinics, agencies, portfolios, and more. Browse them on the site, then have your AI build any of them into a page. Never start from a blank canvas again.
Also in this release
search-imagesandsideload-imageare now core tools. They used to be gated behind Elementor being active. Now they register on any site, they only need a stock-provider API key and the Media Library, matching the plugin’s beyond-Elementor direction.get-block-schemasurfaces Spectra’s shared-helper attributes (container background image/video, border radius, box shadow) with their real names, so agents drive native block attributes instead of falling back to raw HTML.
Get it
Free users get 3.4.0 through the in-dashboard updater; Pro rolls out on Freemius. Read the full changelog or dive into the docs.
As always, we’d love to see what you build. Drop a note in the community or open an issue on GitHub.
