Super Rad MU Plugins
Super Rad's shared WordPress must-use plugins for Bedrock sites
by ⚡️ Super Rad · github.com/gosuperrad/wp-mu-plugins · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/gosuperrad/wp-mu-plugins/archive/refs/heads/main.zipsuperrad/wp-mu-plugins
Super Rad's shared WordPress must-use plugins, for Bedrock sites built from
gosuperrad/bedrock-coolify.
Until this package existed every site carried its own copy of these files, and
a fix to one of them was a pull request per site repo
(bedrock-coolify#29).
| Module | What it does |
|---|---|
src/superrad-mu.php |
DISABLED_PLUGINS (read and write filters), dashboard widget cleanup, anonymous ?author=N enumeration block. Loads the custom login module. |
src/superrad-mail-guard.php |
Reroutes all outbound mail to MAIL_REDIRECT_TO when it is set, on both wp_mail and gform_notification. |
src/superrad-image-formats.php |
WebP (or AVIF) output for uploaded JPEGs, via WordPress's own image_editor_output_format filter. |
src/s3-uploads-r2.php |
Points humanmade/s3-uploads at S3_UPLOADS_ENDPOINT with path-style URLs. Inert unless that constant is set. |
src/superrad-custom-login/ |
The Super Rad login screen styling. |
Installing
Not on Packagist. Add a vcs repository and require it:
"repositories": [
{ "name": "wp-mu-plugins", "type": "vcs", "url": "https://github.com/gosuperrad/wp-mu-plugins" }
],
"require": {
"superrad/wp-mu-plugins": "^1.0"
}
Bedrock's installer-paths puts it at web/app/mu-plugins/wp-mu-plugins/,
which the starter's .gitignore already ignores, and Bedrock's autoloader
loads superrad-mu-plugins.php from there.
Delete any tracked copy of these files first, in the same commit. Every
module defines named functions, so a site that still has
web/app/mu-plugins/superrad-mu.php alongside the package fails with
"Cannot redeclare" on every request. bedrock-coolify's estate-drift check
reports a leftover copy.
Releasing
A new version reaches a site only when that site's composer.lock is bumped
and committed. Tag vX.Y.Z here, then bump each site. See CLAUDE.md for what
to verify before tagging.