WordPress Mixed Content Breaks Admin Assets After HTTPS
A focused workflow for fixing unstyled or partially broken WordPress admin screens after HTTPS when insecure CSS, JavaScript, fonts, or REST requests are still loaded over HTTP.
Quick answer
If wp-admin becomes unstyled or partly broken after HTTPS, open browser developer tools and find the exact blocked HTTP asset. Then verify WordPress Address and Site Address use HTTPS, check `WP_HOME` and `WP_SITEURL` overrides, replace hard-coded HTTP asset URLs safely, review CDN or proxy SSL mode, purge cache after the source is fixed, and retest the same admin screen.
Problem, cause, fix, verify
Problem
If wp-admin becomes unstyled or partly broken after HTTPS, open browser developer tools and find the exact blocked HTTP asset. Then verify WordPress Address and Site Address use HTTPS, check `WP_HOME` and `WP_SITEURL` overrides, replace hard-coded HTTP asset URLs safely, review CDN or proxy SSL mode, purge cache after the source is fixed, and retest the same admin screen.
Why it matters
Symptoms, likely causes, checks, fixes, and verification steps.
Safe check
Confirm the visible symptom
Verify
Change one reversible setting at a time
Editorial trust
- Author
- WPlura Editorial Team
- Last reviewed
- Next review
- Sources
- 5 cited references
On this page
Diagnostic guide
Use this when the cause is still unclear
Symptoms, likely causes, checks, fixes, and verification steps.
The Problem
After an HTTPS migration, a WordPress admin screen may load as plain text, lose icons, fail to open media modals, or show editor controls that do not respond. The login still works, but CSS, JavaScript, fonts, REST requests, or plugin assets are blocked because the HTTPS admin page is trying to load one or more resources over plain HTTP.
This is mixed content. Browsers treat it seriously because an insecure script, stylesheet, font, iframe, or fetch request can be observed or modified in transit. MDN explains that browsers may auto-upgrade some lower-risk resource types, but scripts, stylesheets, iframes, fetch requests, XMLHttpRequest calls, and fonts are blockable mixed content. In wp-admin, those are exactly the asset types that make the dashboard usable.
Symptoms to Confirm
- wp-admin loads without normal styling, icons, dashboard layout, editor controls, or plugin admin UI.
- The browser console shows blocked mixed-content requests for CSS, JavaScript, fonts, REST API calls, admin-ajax requests, or plugin assets.
- The issue began after enabling HTTPS, changing CDN or proxy settings, moving hosts, restoring a backup, running search-replace, or changing WordPress Address or Site Address.
- Public pages look mostly fine, but logged-in admin screens, plugin settings pages, or the block editor break.
- Only one plugin screen fails because that plugin has a saved HTTP asset URL, API base URL, font URL, iframe URL, or custom admin script.
- The error disappears when the exact blocked URL is manually changed from HTTP to HTTPS and the secure resource responds.
Why wp-admin Breaks After HTTPS
WordPress uses the configured site URLs to generate many admin and front-end links. The WordPress migration documentation notes that WordPress Address and Site Address control where WordPress is located and where the site is reached, including admin display. WordPress also has HTTPS migration helpers that update `home` and `siteurl` to HTTPS when the site can actually recognize HTTPS.
Mixed admin assets usually come from one of four places: old `home` or `siteurl` values, constants in `wp-config.php`, saved plugin or builder options, or upstream CDN/proxy configuration. A fifth source is stale cache: a CDN, optimization plugin, object cache, browser cache, or generated asset file can keep serving the old HTTP reference after the correct setting has already changed.
The fix is not simply forcing every request through HTTPS. A redirect can hide the symptom for images, but blockable admin scripts and styles may still be refused by the browser before the admin page becomes usable. The source URL needs to be corrected.
How to Diagnose It
- Open the affected wp-admin screen in a private browser window and open developer tools before reloading.
- Filter the console and network panel for `mixed content`, `blocked`, ``, CSS, JS, font, REST, and admin-ajax requests.
- Copy the first blocked URL, the source file or initiator, the status code, and the exact admin screen where it happened.
- Check Settings > General, or use WP-CLI, to confirm both WordPress Address and Site Address use HTTPS and the expected host.
- Check `wp-config.php` for `WP_HOME`, `WP_SITEURL`, `FORCE_SSL_ADMIN`, reverse-proxy HTTPS handling, and environment-specific URL constants.
- Review CDN, load balancer, and host SSL mode. Make sure WordPress receives the correct HTTPS signal instead of thinking requests are HTTP behind a proxy.
- Search only the likely owner first: theme customizer settings, page builder settings, plugin settings, upload paths, generated CSS, or CDN rewrite settings.
- Retest after each change with cache bypassed so you know which correction fixed the admin asset.
How to Fix It Safely
- Back up the database before changing URLs or serialized plugin options.
- Correct WordPress Address and Site Address to HTTPS if they are wrong. Do not leave temporary hard-coded values in place without documenting them.
- If a plugin or theme option stores an HTTP asset URL, update that setting through the plugin UI when possible.
- Use a serialization-aware search-replace tool for database content and options. Avoid raw SQL replacement on serialized data.
- Regenerate plugin or theme CSS only after the saved source URLs are corrected.
- Fix CDN or reverse-proxy SSL mode if WordPress receives HTTP scheme data while visitors use HTTPS.
- Purge page cache, object cache, CDN cache, browser cache, and generated optimization assets after the source has been corrected.
- Retest the original admin screen, the block editor, media modal, plugin settings pages, REST API index, and any login or checkout pages affected by the HTTPS change.
Common Sources to Check
- `home` and `siteurl` options still use HTTP or the wrong host.
- `WP_HOME` or `WP_SITEURL` in `wp-config.php` override the database with an old HTTP value.
- The site was cloned from staging and plugin settings still point at the staging HTTP domain.
- A page builder, optimization plugin, font plugin, map embed, analytics plugin, or custom admin plugin stores absolute HTTP asset URLs.
- Generated CSS or combined JavaScript files were not rebuilt after the HTTPS migration.
- A CDN rewrites public assets correctly but does not respect logged-in/admin exclusions.
- A reverse proxy terminates TLS but does not pass the expected HTTPS headers to WordPress.
- Browser, object, or CDN cache is serving an old admin page shell with stale asset references.
How Web Plura Diagnostics Helps
Web Plura Diagnostics is relevant because a mixed-content admin issue often crosses WordPress settings, hosting, CDN, cache, REST, and update context. The free plugin provides local Site Health-style checks, URL alignment signals, HTTPS status, hosting guidance, cache hints, front-end response checks, redirect signals, REST API response checks, Fix First prioritization, support-safe snapshots, JSON/CSV exports, scheduled local scans, multisite visibility, and WP-CLI output.
It does not rewrite your database, fix a CDN rule, or guarantee that every mixed-content URL has been found. Use it after capturing the blocked asset URL so you can add a clean local diagnostics snapshot to the support handoff. That is especially useful when the next owner may be the host, CDN provider, developer, or plugin vendor rather than the site owner.
Diagnostic guide support tool
Web Plura Diagnostics
Free local diagnostics for site health, HTTPS and response signals, cache hints, REST API response, plugin/theme impact, hosting, update risk, Fix First prioritization, support-safe snapshots, JSON/CSV exports, scheduled scans, and WP-CLI output.
A Practical Diagnostics Workflow
- Install Web Plura Diagnostics from WordPress.org: download the free plugin on WordPress.org.
- Run Diagnostics before making another URL or cache change so the baseline captures HTTPS, response, REST, hosting, and cache signals.
- Open the Front-end Response and Hosting findings for home URL HTTPS, redirects, response code, cache-control, compression, and REST API response.
- Use Fix First items to decide whether the next action belongs to the site admin, developer, host, CDN provider, or plugin vendor.
- Export a support-safe snapshot, JSON export, or CSV export for the person who will update the URL source or proxy/CDN rule.
- After the manual fix, rerun the same checks and keep the before/after notes with the HTTPS migration record.
The free plugin is local-first, does not require an external account for core diagnostics, and does not send diagnostics telemetry to Web Plura by default. Product details are available at WPlura product details and the main WPlura site is WPlura.
Prevent the Same Issue From Returning
- Document the canonical host, HTTPS policy, CDN SSL mode, and reverse-proxy HTTPS headers.
- Run HTTPS and mixed-content checks on staging before changing the production site.
- Keep a list of plugins that generate CSS, cache JavaScript, load fonts, or store absolute asset URLs.
- Use serialization-aware search-replace during migrations and keep a rollback-ready database backup.
- Exclude logged-in and wp-admin traffic from page cache and aggressive CDN optimization unless a tool is explicitly designed for admin use.
- Retest wp-admin, block editor, media modal, REST API, forms, checkout, and account pages after every HTTPS, CDN, host, or domain change.
References
References
- Mixed content - MDN Web Docs, accessed 2026-09-17
- HTTPS - WordPress Developer Resources, accessed 2026-09-17
- Migrating WordPress - WordPress Developer Resources, accessed 2026-09-17
- wp_update_urls_to_https() - WordPress Developer Resources, accessed 2026-09-17
- Site Health screen - WordPress.org Documentation, accessed 2026-09-17
Frequently Asked Questions
Why does mixed content break wp-admin after HTTPS?
The admin page is loaded over HTTPS, but one or more required CSS, JavaScript, font, iframe, REST, or admin-ajax resources are still requested over HTTP. Browsers commonly block those resource types, so the dashboard can appear unstyled or partly nonfunctional.
Should I run a database-wide HTTP to HTTPS replacement?
Only after you have a backup and understand the source. Use a serialization-aware tool, and start with the specific blocked URL or option owner. A blind raw SQL replacement can damage serialized options or change URLs that should remain unchanged.