WordPress can normalize image orientation while an SEO plugin, CDN, Open Graph tag, social provider, or browser keeps an older derivative. The result is a correct Media Library image but a rotated, cropped, or stale preview when the URL is shared.
Use this for news, product, real-estate, portfolio, restaurant, and ecommerce sites where phone photos feed featured images and social sharing is an important acquisition channel.
Quick answer
Upload orientation fixtures, publish them as featured images, save the exact Open Graph URL and response, then edit or replace each image. Purge origin and CDN in order, request a social re-scrape, and pass only when metadata, pixels, dimensions, and preview all match.
What to check first
- Create JPEG fixtures for EXIF orientations 1, 3, 6, and 8, plus a stripped copy of each normalized image.
- Record attachment ID, original file, generated sizes, stored metadata, featured image ID, Open Graph URL, dimensions, ETag, and Last-Modified value.
- Test crop, rotate, scale, replace-media, regenerate-thumbnails, SEO metadata update, and featured-image swap workflows.
- Fetch the Open Graph URL from origin and CDN, then compare pixels before asking social providers to scrape again.
- Verify Facebook, LinkedIn, X, Slack, iMessage, or the channels actually used by the business, without assuming they share one cache.
Diagnostic table
Use this table to keep the work practical. It connects the symptom to evidence and a verification step.
| Action | Evidence to collect | How to verify |
| Build orientation fixtures | Create JPEG fixtures for EXIF orientations 1, 3, 6, and 8, plus a stripped copy of each normalized image. | Open Graph points to the intended current derivative. |
| Capture metadata and cache validators | Record attachment ID, original file, generated sizes, stored metadata, featured image ID, Open Graph URL, dimensions, ETag, and Last-Modified value. | Origin and CDN return the same correctly oriented pixels. |
| Exercise every image edit path | Test crop, rotate, scale, replace-media, regenerate-thumbnails, SEO metadata update, and featured-image swap workflows. | Declared width and height match the file. |
| Purge origin and CDN in order | Fetch the Open Graph URL from origin and CDN, then compare pixels before asking social providers to scrape again. | A fresh social scrape displays the same crop and orientation as the page. |
Why this usually happens
- The attachment can point to a new derivative while Open Graph metadata keeps an old URL.
- A CDN can cache the old bytes under an unchanged filename.
- Social platforms maintain independent caches and refresh policies.
- Image replacement plugins can preserve attachment IDs but change derivative availability.
Field notes
- Keep one evidence row per layer: attachment ID and metadata, origin URL and validator, CDN URL and validator, page Open Graph tag, and social provider scrape time. That row shows exactly where the old orientation or crop survives.
- When a provider does not offer an immediate refresh, publish a versioned Open Graph image URL and record the first confirmed fresh preview. Avoid repeated blind purges because they erase the sequence needed to identify the stale layer.
Useful command or data shape
Adapt paths, IDs, and privacy handling to the site before running commands or storing data on production.
attachment_id: 2841
exif_orientation: 6
featured_url: /uploads/2026/07/storefront-1200x630.jpg
og_dimensions: 1200x630
origin_etag_changed: true
cdn_etag_changed: true
social_rescrape: requested
preview_orientation: correct
Safe fix order
Do the work in a sequence that makes each result easy to prove. Stop if a step produces new evidence that changes the incident scope.
- Build orientation fixtures
- Capture metadata and cache validators
- Exercise every image edit path
- Purge origin and CDN in order
- Re-scrape and compare the preview
Decision rule
Pass when the public image, Open Graph metadata, CDN bytes, declared dimensions, and social preview all show the intended orientation after upload, edit, replacement, and cache refresh.
What to tell the client or owner
Give the owner the affected versions, exact workflow, observed result, business impact, evidence location, temporary control, named owner, and next review time. Remove credentials and personal data from shared screenshots and logs.
Production verification checklist
- Open Graph points to the intended current derivative.
- Origin and CDN return the same correctly oriented pixels.
- Declared width and height match the file.
- A fresh social scrape displays the same crop and orientation as the page.
Mistakes to avoid
- Do not change several plugins, cache rules, or infrastructure settings before preserving a baseline.
- Do not treat one successful test as proof for retries, alternate clients, background work, or mixed-version fleets.
- Do not paste secrets, personal data, complete production payloads, or customer files into tickets or screenshots.
- Do not close the test until the final user-visible state and the server-side evidence agree.
Questions teams ask during testing
Why does changing the featured image not update the preview?
The SEO metadata, CDN bytes, or social platform cache may still reference the previous URL. Verify each layer separately.
Should replacement images keep the same filename?
A versioned filename is often easier to invalidate, but the site can keep a stable URL if its purge and social refresh process is proven.
When HandL WP should help
Bring in HandL WP when a production checkout, form, email, media pipeline, code-quality gate, or paid lead workflow is at risk. We can preserve evidence, isolate the failing layer, make the smallest corrective change, and verify the result across WordPress, connected services, logs, and the user journey.
If this is active on a production site, fix WordPress social image previews.
Related HandL WP guides
Use these related guides when the same issue touches tracking, security, checkout, or crawler visibility.
Choose a stable or versioned image cache strategy
Use the WordPress 7.1 EXIF versioned filename cache test to compare replacement, regeneration, origin and CDN validators, responsive references, Open Graph refresh, rollback, and old-file cleanup.
Helpful references