Blog Deployment SOP

Learned the hard way -- Apr 7, 2026 -- 10+ hours of failures condensed into 7 steps

THE RULE THAT WOULD HAVE SAVED 10 HOURS

Never tell Robert a blog is ready without fetching the RENDERED page and verifying every element.
API 200 != page renders correctly. Check the OUTPUT not the INPUT.

1
Upload Images
>
2
Build Content
>
3
Verify Save
>
4
CSS + JS
>
5
Lazy-Load Fix
>
6
Purge 3 Caches
>
7
Verify Rendered
1

Upload ALL Images First

2

Build Content (Clean HTML Only)

3

Verify Content Survived WP Save

4

CSS + JS via Code Snippet (Not Content)

5

Fix WP Rocket Lazy-Load (Critical)

6

Purge ALL THREE Cache Layers

7

Verify RENDERED Page (Not API)

Traps That Cost 10 Hours (Memorize These)

TrapWhat HappensFix
Orphaned </div>Content escapes wrapper, sidebar disappearsRemove the orphan, check first 500 chars
Stale Oxygen metaPost ignores Template 59, layout breaksDelete _ct_builder_shortcodes from post
WP Rocket lazy-loadAll images replaced with SVG placeholdersOutput buffer in template_redirect
onclick strippedWidgets present but don't respond to clicksaddEventListener delegation in DOMContentLoaded
HEAD returns 200Image URL looks valid but is homepage redirectGET and check content-type is image/*
Draft previewTemplate doesn't fully renderPublish first, verify, decide visibility after
wpautop adds <br>Flex layouts break with line break elementsCSS: hide br in affected containers
base64 in snippetContent renders but bypasses templateUse the_content filter or plain post_content
container divBreaks Oxygen 2-column grid layoutRemove wrapper, let template handle width
Claiming "done"Robert finds it broken, trust erodesVerify RENDERED output EVERY TIME