During the March 2026 SEO audit of the Reynolds site, schema injection was identified as a remaining gap after meta titles, descriptions, and target keywords were resolved via AI automation. The chosen implementation approach is a WordPress Must-Use (MU) plugin to inject proper structured data schema across all pages sitewide.
This article documents the rationale, implementation notes, and caveats for that plugin so the approach is not forgotten or misattributed to unknown causes in the future.
The Reynolds site reached an Ahrefs health score of 100 after the March 2026 audit cycle, with the following fixes applied:
Schema injection was the final outstanding SEO item flagged for the site. Rather than relying on the existing SEO plugin (SEOPress) or adding schema manually page-by-page, an MU plugin was chosen to handle this sitewide in a consistent, plugin-independent way.
See the broader audit context in [1].
A WordPress Must-Use (MU) plugin lives in /wp-content/mu-plugins/ and is automatically loaded on every page request — it cannot be deactivated from the WordPress admin UI. This makes it appropriate for injecting code that must always be present, such as sitewide schema markup.
Key properties:
- Always active; not visible in the standard Plugins list
- Loads before regular plugins
- Cannot be accidentally disabled by a client or another team member
⚠️ Documentation requirement: Because MU plugins are invisible in the standard WordPress admin, this plugin must be documented here and in the Reynolds client file. Without documentation, future developers will not know it exists and may be confused by schema appearing on pages with no obvious source.
The plugin should inject JSON-LD structured data schema appropriate to the Reynolds business type (moving company / local business) on the relevant pages. At minimum this should include:
LocalBusiness or MovingCompany schema on the homepageService schema on top service pagesBreadcrumbList where applicableThe plugin hooks into wp_head to output the JSON-LD <script> block. Example structure:
<?php
/*
* Plugin Name: Reynolds Schema Injection
* Description: Injects JSON-LD structured data schema sitewide for Reynolds.
* Version: 1.0
* Author: Asymmetric
*/
add_action( 'wp_head', 'reynolds_inject_schema' );
function reynolds_inject_schema() {
// Inject LocalBusiness / MovingCompany schema
// TODO: populate with finalized schema values
echo '<script type="application/ld+json">' . "\n";
echo '{ ... }' . "\n";
echo '</script>' . "\n";
}
Before deploying, verify that SEOPress (or any active SEO plugin) is not already outputting conflicting schema for the same page types. Duplicate schema blocks are not harmful but are untidy and can cause confusion during future audits.
The existing SEO plugin (SEOPress) was considered but the MU plugin approach was preferred because: