Back in March 2025, I wrote about reviving Remove Empty Shortcodes after letting it collect dust for a few years. At the time, I’d rewritten it, added support for multi-line shortcodes, and pushed it back to the WordPress plugin repository.

That was version 0.6.0. This is 1.0.0 and it’s a much more significant release.
What’s New in Remove Empty Shortcodes 1.0.0
The plugin has always worked automatically in the background, quietly removing orphaned shortcodes when content is displayed. That’s still true. But now there’s visibility into what it’s actually finding.
Admin Scanner
Under Tools > Empty Shortcodes, you’ll find a scanner that searches your entire site for unregistered shortcodes.

It shows you:
- Which shortcodes are orphaned
- How many posts are affected
- The surrounding context so you can see exactly where each one lives
There are two views: By Shortcode (grouped by shortcode name) and By Post (grouped by affected content). You can expand any row to see the full context and jump directly to the post editor.
Ignore List
Sometimes you want to keep a shortcode even if it’s not registered. Maybe you’re planning to reinstall a plugin, or maybe it’s intentional placeholder text.

The scanner includes an Ignore action for each shortcode. Ignored shortcodes won’t be flagged in future scans, and the automatic removal feature will leave them alone.
Fixed False Positives
This one was embarrassing. The previous version would incorrectly remove text like [at] and [dot]—common patterns in obfuscated email addresses. If you had user[at]domain[dot]com in a post, the plugin would strip it down to userdomaincom.

The fix was straightforward: use WordPress’s native get_shortcode_regex() instead of a custom pattern. Now the plugin only touches actual registered shortcodes, leaving everything else alone.
Under the Hood
Unit Tests
I added a proper test suite using PHPUnit and Brain Monkey. There are 46 tests covering the core functions, the scanner, and the cache manager.
And if you’re not familiar, Brain Monkey lets you mock WordPress functions without spinning up a full WordPress installation. Tests run in milliseconds instead of seconds. If you’re writing WordPress plugins and haven’t tried it, take a look.
Automated Deployment
I finally set up the 10up WordPress.org deploy action. Now when I publish a GitHub release, it automatically deploys to WordPress.org. No more manual SVN commits.
The setup is straightforward:
- Add your SVN credentials as GitHub secrets
- Create a
.distignorefile listing what to exclude - Put your banner, icon, and screenshots in a
.wordpress-orgdirectory
Tag a release, and it handles the rest.
Get It
As with most plugins, you can grab it from WordPress.org.
If you’re running an older version, update through the WordPress admin. If you’re new to the plugin, install it from the repository and activate. It’s a large update but it still “just works.” That is, there’s still no configuration needed. The automatic cleanup works immediately. Use the scanner when you want to see what’s happening.
