altajan.com arrived in much better shape than demelos.com — all 109 published posts/pages were already at Rank Math score 97-100, focus keywords were set everywhere, and a substantial set of custom mu-plugins existed (canonical tags, schema, performance, internal links, share buttons). The work focused on the gaps: knowledge graph entity type, missing OG/Twitter image tags, and most critically, no LiteSpeed Cache plugin (TTFB was 1.2-5s).
Result: TTFB 1.2s → 0.09s on cache hit (12-13× faster), og:image + twitter:image now emit on every page, knowledge graph entity correctly typed as Company with name "Alta Janitorial Services", every img on every tested page has non-empty alt text, and JS deferral went from 3/28 to 19/42 scripts.
Initially I added og:image via wp_head action — it ran (debug confirmed) but the tag never made it into the final HTML. Some downstream plugin or filter was specifically stripping bare og:image tags. Switched to an output-buffer injection that runs at template-redirect priority 11 (after every other plugin), inserts the tag immediately before </head>. Bypass works — tag is now stable on every page.
person with name "Alta Janitorial - Commercial Cleaning". Janitorial is a company, not a person. Switched to company, set company_name = "Alta Janitorial Services", added website_alternate_name = "Alta Janitorial".og:image + twitter:image now on every page DONEog:image:secure_url only (HTTPS variant emitted by Rank Math, but Facebook OG validator wants bare og:image too). Now: output-buffer injection adds both tags before </head> on every page. Source priority: per-post Rank Math FB image → per-post Twitter image → featured image → site-wide homepage_facebook_image → site-wide open_graph_image → og:image:secure_url fallback.og-default.jpg URL DONEopen_graph_image pointed at altajan.com/wp-content/uploads/og-default.jpg which 301 redirected (file deleted). Switched to a real existing image: ALTA-JANITORIAL-SERVICES-2025-00069.jpg (1024×683, attachment ID 3852).curl -sSI https://www.altajan.com/ | grep x-litespeed-cache → returns hit on second+ request.<img> on every page has a non-empty alt. If alt="" or alt missing, looks up media library by URL → uses _wp_attachment_image_alt → falls back to humanized filename prefixed with "Alta Janitorial — ". Live audit on 5 sample pages: 0 empty + 0 missing alts.<h1> placeholders neutralized + viewport fix DONE<h1>…</h1> to <div>, and strips user-scalable=no from viewport meta if present.New file: /home/altajan.com/public_html/wp-content/mu-plugins/alta-seo-render.php (v1.0). Coexists with the existing alta-* custom plugins (canonical tags, schema, performance, internal links, share buttons, comments display, competitor tracker) and the dm-* plugins.
What this one does:
<section> with an injected <h1> derived from the page's Rank Math SEO title (only when the page lacks a real H1; otherwise auto-demotes to H2).<h1> → <div>; strip user-scalable=no; demote our injected H1 if real H1 elsewhere.<img> gets a sensible alt).og:image + twitter:image before </head> if absent.| Setting | Value |
|---|---|
cache (master) | 1 — enabled |
cache-mobile | 1 |
cache-browser | 1 |
cache-rest | 1 |
cache-ttl_pub | 86400 (24h) |
cache-ttl_browser | 31557600 (1y) |
optm-css_min / optm-js_min / optm-html_min | all on |
optm-js_defer | 1 — defer all JS |
optm-html_lazy | 1 — lazy-load below-fold |
media-lazy + media-iframe_lazy | both 1 |
media-add_missing_sizes | 1 — auto-add width/height (CLS protection) |
img_optm-auto | 1 — auto-optimize new uploads |
img_optm-webp | 1 (set; needs QUIC.cloud signup to convert existing) |
db_optm-revisions_max | 5 — cap revisions per post |
| Signal | Status |
|---|---|
| title | "Trusted Alta Janitorial Services | Commercial Cleaning Utah" OK |
| og:image | ALTA-JANITORIAL-SERVICES-2025-00021-scaled.webp OK |
| twitter:image | same OK |
| og:site_name | "Alta Janitorial - Commercial Cleaning" OK |
| viewport | width=device-width, initial-scale=1 OK |
| H1 with text | "Commercial Cleaning & Janitorial Services" (1) OK |
| H2 count | 8 OK |
| Images: total / empty alt / no alt attr | 78 / 0 / 0 OK |
| Schema blocks (JSON-LD) | 2 OK |
| Scripts deferred | 19 / 42 OK |
| x-litespeed-cache | hit OK |
| TTFB (cache) | 0.085s OK |
local_phone, local_email, local_address are unset. Alta is a local Utah business — populating these strengthens LocalBusiness schema and local-pack signals.social_url_* are unset (Facebook, Twitter/X, Instagram, LinkedIn). Adding strengthens Knowledge Graph sameAs.www.altajan.com/*: Cache Level → Cache Everything, Edge TTL 2h. Bypass /wp-admin/* and /wp-login*.| # | Item | Effort |
|---|---|---|
| 1 | The 5 user-action items above | ~17 min total |
| 2 | Move to next site (e.g. aliahona.com or utcarpet.com) | per-site basis |
| 3 | Audit altajan's existing custom mu-plugins (alta-internal-links, alta-schema-markup, etc.) — they look well-built; review what they do and ensure no duplication with my mu-plugin | 20 min |
| 4 | Make sure existing internal-link plugin doesn't conflict with our refs section — altajan didn't get the "References & Related" section that demelos got, since the existing internal-links plugin probably handles that | — |