WordPress 7.1 Broke My Site: Known Issues and Fixes
Trouble after updating to WordPress 7.1? See what 7.1 changed, which bugs 7.1.1 fixed, how to prove the update is to blame, and how to roll back safely if you must.
Problems after WordPress 7.0? Learn what changed (PHP 7.4 minimum, iframed editor, pattern locking), which bugs 7.0.1 fixed, and how to roll back or report a bug.
WordPress 7.0 “Armstrong” arrived on 20 May 2026, later than its original April date, and it was a big one: a redesigned admin with a new “Modern” color scheme, AI building blocks, a new Font Library page, visual revisions, block-level custom CSS, new blocks, and a higher minimum PHP version. If your site started misbehaving around then, with a critical error, an editor that behaves differently, patterns you can no longer edit freely, or an update that never appears, this guide helps you work out whether 7.0 is responsible and what to do about it.
Most problems after 7.0 trace back to a handful of deliberate changes documented in the official WordPress 7.0 Field Guide, plus a set of regressions fixed in 7.0.1. Below you will find each change explained in plain terms, the symptoms it produces, how to confirm the cause from your logs and browser, how to roll back if you truly must, and how to report a genuine bug.
A major release changes core behavior that themes and plugins depend on. When a plugin relied on something that changed, the plugin breaks, even though core is working as designed. When core itself has a mistake, a point release on the same branch fixes it. The 7.0 branch has had eight point releases so far:
| Release | Date | Contents |
|---|---|---|
| 7.0 | 20 May 2026 | Feature release |
| 7.0.1 | 9 July 2026 | Fixes for 31 bugs in core and the block editor |
| 7.0.2 | 17 July 2026 | One critical and one high severity security fix; WordPress.org enabled forced automatic updates for affected sites |
| 7.0.3 | 6 August 2026 | Twelve security fixes |
| 7.0.4 | 12 August 2026 | One security fix for sites using Imagick and Ghostscript |
| 7.0.5 to 7.0.8 | 17 September to 28 October 2026 | Security fixes backported from the 7.1 branch |
Because of 7.0.2’s forced updates, many sites changed version without anyone clicking a button. That matters when you are matching error times to update times.
You need an administrator login and either SSH or your hosting control panel. Back up files and database first. If you cannot reach the dashboard at all, our critical error guide covers recovery mode.
wp-config.php, using wp or wp-cli depending on your host.WordPress 7.0 dropped support for PHP 7.2 and 7.3. The new minimum is PHP 7.4, while the recommended version stays at PHP 8.3. The core team’s announcement said sites on PHP 7.2 or 7.3 stay on the 6.9 branch, which continues to get security fixes as backports.
wp eval 'echo PHP_VERSION, PHP_EOL;'
wp core check-update
These run over SSH with no placeholders. The first prints the PHP version WP-CLI uses, which can differ from the web server’s; confirm it under Tools, Site Health, Info, Server. The second lists the core updates available to this site. If PHP is below 7.4, WordPress will not offer 7.0 or later at all. Forcing it fails with “The update cannot be installed because WordPress 7.0 requires PHP version 7.4 or higher. You are running version PHP_VERSION.” The fix is to upgrade PHP, which our PHP upgrade guide walks through safely, then update WordPress.
If you are on PHP 7.4 or newer and the site broke after 7.0, continue.
Compare the update time with the first error:
wp core version --extra
stat -c '%y' wp-includes/version.php
These run over SSH. The first shows the WordPress version and database revision. The second prints when version.php was last modified, normally the moment of the update (on BSD or macOS systems use stat wp-includes/version.php without -c). Now open the PHP error log and find the first entry after that time. A fatal error naming wp-content/plugins/PLUGIN_SLUG/ or wp-content/themes/THEME_SLUG/ points at that plugin or theme, even if core changed underneath it.
To confirm, reproduce on a staging copy with every plugin deactivated and a default theme active. If the problem disappears, re-enable plugins one at a time. If it survives with nothing but core, it may be a core bug: see Step 6.
7.0 applies contentOnly mode more broadly: patterns that previously allowed free editing of their inner blocks now default to content-only, so editors can change text and images but not the layout. Clients often report this as “I can’t move or delete blocks inside the pattern anymore.” The Field Guide documents an opt-out for unsynced patterns: the disableContentOnlyForUnsyncedPatterns editor setting, set through the block_editor_settings_all PHP filter. Developers of custom blocks used inside patterns should mark content attributes with "role": "content" in block.json, or those attributes cannot be edited and the blocks may be hidden in List View.
In 7.0 the post editor runs inside an iframe when every block inserted in the post uses block API version 3 or higher; if any older block is present, the iframe is dropped for compatibility. That means the same site can show two different editor behaviors depending on which blocks a post contains. A plugin block that styles correctly on one post and not another is a classic sign. The Advanced section shows how to list the older blocks.
The new admin color scheme, typography and screen transitions restyle core screens. Plugin settings pages that hard-coded colors or relied on old admin markup can look broken or low-contrast. Editor component bottom margins were removed and margin-free styles became the default, which can make plugin panels in the editor look cramped. These are cosmetic; report them to the plugin vendor.
default_role_dropdown_excluded_roles filter changes the excluded list. If registrations suddenly get a different role, check this setting.The 7.0.1 release candidate announcement lists the regressions it addressed. If your symptom matches one of these, update to the newest 7.0.x or later instead of rolling back:
| Symptom | Ticket |
|---|---|
wp_kses() corrupting valid inline CSS background-image: url(...) declarations into a broken style attribute, so background images in content disappeared |
Trac #65270 |
The global-styles-inline-css stylesheet could not be removed by themes and plugins that dequeue it |
Trac #65336 |
Code calling block_core_navigation_submenu_render_submenu_icon() after it was removed; 7.0.1 restored it as a deprecated shim |
Gutenberg #78484 |
| Emoji detection script not printed in the admin | Trac #65310 |
Incorrect array access in wp_get_attachment_image_src on PHP 8.5 |
Trac #64742 |
| A black flash on wp-admin pages before they finish loading | Gutenberg #78493 |
| Admin reskin problems: unstandardized form elements on mobile, crowded publish buttons, misaligned media screens | Trac #64999, #65286 and related |
wp core update
wp core verify-checksums
These run over SSH. The first installs the newest release offered to your site; the second checks every core file against official checksums. Good output from the second is “Success: WordPress installation verifies against checksums.” Any reported mismatch in wp-admin or wp-includes means a core file was changed or left behind and should be investigated.
Roll back only when a critical plugin cannot work on 7.0 and no fix exists yet. The safe target is the newest 6.9.x release, because the security fixes from every 7.0.x release were backported there. As of early November 2026 that is 6.9.11, released on 28 October 2026; check the WordPress releases archive for anything newer first.
wp db export pre-rollback-YYYY-MM-DD.sql
wp core update --version=6.9.11 --force
wp core verify-checksums
These run over SSH. YYYY-MM-DD is today’s date for the backup file name; move the file out of the web root afterward. --version chooses the release, and --force allows installing a lower version than the current one. Good output ends with “Success: WordPress updated successfully.” and a clean checksum result.
define( 'WP_AUTO_UPDATE_CORE', 'minor' ); in wp-config.php. Security releases may still be pushed when the issue is severe, as happened with 7.0.2.Before reporting, search the WordPress.org support forums and core Trac (core.trac.wordpress.org) for your exact error text. If you find a matching ticket, add your reproduction steps there.
If a block looks or behaves differently from post to post in 7.0, check which registered blocks still use an older block API version. Open the post editor, open the browser console, and run:
wp.blocks.getBlockTypes().filter( ( b ) => ( b.apiVersion || 1 ) < 3 ).map( ( b ) => b.name + ' (v' + ( b.apiVersion || 1 ) + ')' );
This runs in the browser console on the post editor screen, and it changes nothing. It lists every registered block whose API version is below 3, treating a missing value as version 1, in the form PLUGIN_NAMESPACE/BLOCK_NAME (v2). An empty list is good: your posts get the iframed editor consistently. Names with a namespace such as PLUGIN_NAMESPACE/ belong to plugins; insert any one of them into a post and that post’s editor drops the iframe. Send the list to the plugin vendors and ask for API version 3 updates, because 7.1 makes the iframe permanent for every post.
To see which mode you are in right now, run document.querySelector( 'iframe[name="editor-canvas"]' ) !== null in the same console. true means the editor canvas is in an iframe; false means it is not.
For PHP problems, the same principle applies with a stack trace. Temporarily set WP_DEBUG and WP_DEBUG_LOG to true and WP_DEBUG_DISPLAY to false in wp-config.php, reproduce the error once, and read wp-content/debug.log. The first frame in the trace that points into wp-content/ is the code that needs updating. Turn debugging off and delete the log afterward.
Contact your host if PHP cannot be upgraded to 7.4 or newer from your control panel, if the update failed and left the site in maintenance mode (see our failed updates guide), or if you cannot see the error log. Send:
wp core version --extra, wp core verify-checksums and your PHP version.Our diagnostic tools check status codes and headers from outside your network, and the Emergency Room is the place to start if the whole site is down.
Did this fix it?
Still stuck? Start again from what you can see in the Emergency Room.
Still stuck?
Print a free one-page checklist to keep, or open the Emergency Room if the symptom does not match.
Get the free checklistsKeep reading
Search the field manual
Or jump straight to a symptom
Press / to search from any page, Esc to close