Learned the hard way -- Apr 7, 2026 -- 10+ hours of failures condensed into 7 steps
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.
| Trap | What Happens | Fix |
|---|---|---|
| Orphaned </div> | Content escapes wrapper, sidebar disappears | Remove the orphan, check first 500 chars |
| Stale Oxygen meta | Post ignores Template 59, layout breaks | Delete _ct_builder_shortcodes from post |
| WP Rocket lazy-load | All images replaced with SVG placeholders | Output buffer in template_redirect |
| onclick stripped | Widgets present but don't respond to clicks | addEventListener delegation in DOMContentLoaded |
| HEAD returns 200 | Image URL looks valid but is homepage redirect | GET and check content-type is image/* |
| Draft preview | Template doesn't fully render | Publish first, verify, decide visibility after |
| wpautop adds <br> | Flex layouts break with line break elements | CSS: hide br in affected containers |
| base64 in snippet | Content renders but bypasses template | Use the_content filter or plain post_content |
| container div | Breaks Oxygen 2-column grid layout | Remove wrapper, let template handle width |
| Claiming "done" | Robert finds it broken, trust erodes | Verify RENDERED output EVERY TIME |