WordPress Plugins
Plugins I've built and ship under GPL-2.0-or-later. Each page documents the problem solved, the key architectural choices, and the code highlights that matter.
ReleasedEditorv4.0.1A/B Testing for Gutenberg
An A/B Test block for the WordPress block editor — cache-friendly, cookie-free, with built-in click + dwell-time analytics.
Work in progressSEOv3.0.3Yoast Video SEO Booster
Get embedded YouTube and Vimeo videos out of Search Console's "video is not the main content" bucket — with a Yoast-integrated video sitemap and a dedicated watch page per video.
Work in progressPerformancev3.0.4WP Deep Performance Analyzer
12 profiling tabs for WordPress — from PHP lifecycle checkpoints to autoloaded bloat, render-blocking assets, and outbound HTTP calls.
What these plugins have in common#
All three started as a problem on a client site that no existing plugin solved without a compromise I was not willing to make. That is the bar: I write a plugin when the alternative is a workaround I would have to explain to the next developer.
The result is that none of them are general-purpose. Each one does a narrow thing thoroughly, on the assumption that you already know why you need it.
What each one is for#
| Plugin | Solves | Status | Requires |
|---|---|---|---|
| A/B Testing for Gutenberg | Split-testing blocks without cookies or a cache bypass | Released | WP 6.7+, PHP 8.1+ |
| WP Deep Performance Analyzer | Finding what is slow, not just that it is slow | WIP | WP 6.0+, PHP 8.0+ |
| Yoast Video SEO Booster | Embedded video that Search Console refuses to index | WIP | WP 6.0+, PHP 8.0+, Yoast SEO |
A/B Testing for Gutenberg adds a real A/B Test block to the block editor. The hard part is not the split — it is splitting behind full-page cache. Most A/B plugins set a cookie, which makes every response uncacheable and quietly undoes the performance work the site paid for. This one assigns variants round-robin at render with no cookie and no session, so WP Rocket, LiteSpeed and an object cache all keep working.
WP Deep Performance Analyzer is twelve profiling tabs: PHP lifecycle
checkpoints with time and memory deltas, the top-20 autoloaded options and
total autoload weight, a $wp_filter dump grouped by core / plugin / theme /
mu-plugin, and a log of every outbound HTTP and AJAX call. It answers the
question Query Monitor leaves you with — which of these 90 plugins is
actually costing the 400ms.
Yoast Video SEO Booster gets embedded YouTube and Vimeo out of Search
Console's "video is not the main content of the page" bucket. It registers a
/video-sitemap.xml as a Yoast Sitemap Provider, emits VideoObject JSON-LD,
and generates a dedicated watch page per video so the URL Google indexes has
the video as its only content.
Why token-gated download instead of the WordPress.org repository#
These are distributed as signed, short-lived download links from this site rather than through the plugin directory. Two reasons, and neither is secrecy — they are GPL-2.0-or-later, and the source is available on request.
The first is that the directory's review queue and guidelines are tuned for plugins aimed at end users, and these are aimed at developers. The second is that updates ship through plugin-update-checker against my own update server, which means I can push a fix the same day rather than waiting on a review.
What each page contains#
Every plugin page is a case study rather than a feature list: the problem as it appeared on a real site, the architectural choice that solved it, the trade-off that choice cost, and the code that matters. If you are evaluating whether to use one, the page is written to let you decide without installing it.
Related#
If the problem is smaller than a plugin, it may already be a browser-only tool or a Chrome extension — the same checks, without installing anything into a WordPress site.
FAQ#
Are these plugins free?#
Yes, all three ship under GPL-2.0-or-later at no cost. The download is token-gated to keep the update channel honest, not to charge for it — you get a signed link on the plugin's page without an account.
Why are two of them marked WIP?#
WIP means the plugin runs in production on sites I maintain but the public documentation, upgrade path, or edge-case handling is not finished. Released means I would hand it to another developer without a caveat. The status on each card is the honest one, not a marketing label.
How do updates reach an installed plugin?#
Through plugin-update-checker, which polls my update server rather than the
WordPress.org directory. The plugin's Update URI header points there, so
wp-admin → Plugins shows updates the same way it does for directory plugins.
Can I see the source before installing?#
Yes — ask, and I will send the repository. The plugins are GPL-licensed, so the source travels with the zip in any case; the request just saves you the download.