What you are seeing
You already know the most useful fact: what changed. Updates break sites in a few repeatable ways, and the message on screen tells you which one. Fix the one thing that changed rather than undoing everything.
| What you see after the update | What it usually means |
There has been a critical error on this website. | A PHP fatal error in the updated code or in something that depends on it. WordPress may email the admin a recovery mode link. |
| A blank white page | A fatal error with error display off, or memory exhausted. |
Briefly unavailable for scheduled maintenance. Check back in a minute. that never goes away | The update was interrupted and left a .maintenance file behind. |
Plugin could not be activated because it triggered a fatal error. | The plugin’s code crashes on this PHP or WordPress version, or clashes with another plugin. |
Destination folder already exists. or The package could not be installed. | A half-finished earlier install left a folder behind, or the zip is not a valid plugin or theme. |
| Layout broken, sections unstyled, builder will not load | Page builder CSS not regenerated, or caches still serving old files. |
| WooCommerce asks for a database update, or checkout fails | A WooCommerce update needs its database step, or theme template overrides are out of date. |
Errors such as Call to undefined function with no update on your side | The host changed the PHP version. |
An email from your site: Some plugins have failed to update or a list of automatic updates | Automatic updates ran overnight. The email lists what changed. |
Confirm it in two minutes
These checks run in an SSH terminal inside the site’s folder (the one that contains wp-config.php). Your hosting panel shows the SSH login details.
1. See what changed most recently.
ls -lt wp-content/plugins wp-content/themes | head -n 15
wp core version
-lt sorts folders by last modified time, newest first; head -n 15 shows only the top of the list. The folder dated when the trouble started is your first suspect. wp core version tells you whether WordPress itself moved to a new release.
2. Read the fatal error.
grep -h 'PHP Fatal' wp-content/debug.log error_log 2>/dev/null | tail -n 5
grep -h pulls fatal error lines from the WordPress debug log and the PHP error log in the site folder; 2>/dev/null hides the message for whichever file does not exist; tail -n 5 keeps the newest five. Your host may keep the PHP log elsewhere, shown in the hosting panel. Good: nothing. Bad: a line whose file path runs through wp-content/plugins/PLUGIN_NAME/ or wp-content/themes/THEME_NAME/. That folder name is the culprit.
3. Check whether WordPress loads without plugins.
wp plugin list --skip-plugins --skip-themes --fields=name,status,version,update_version
--skip-plugins and --skip-themes load WordPress without running any plugin or theme code, so the command works even while the site is crashing. If this runs and normal wp plugin list does not, a plugin or theme is the cause, not core.
4. Switch off just the suspect.
wp plugin deactivate PLUGIN_NAME --skip-plugins=PLUGIN_NAME
PLUGIN_NAME is the folder name from check 2. --skip-plugins=PLUGIN_NAME stops that one plugin’s code loading while WP-CLI deactivates it, so the crash does not block the command. Reload the site in a private window. Good: it loads. If not, check the next suspect.
5. Check the PHP version the site runs.
wp eval 'echo PHP_VERSION, "\n";'
It prints the PHP version WP-CLI runs, which is usually but not always the site’s version; confirm under Tools, Site Health, Info, Server. If it changed recently and nobody updated anything, the host moved you to a newer PHP.
Most likely causes, in order
- One plugin update that is incompatible. Tell: check 2 names that plugin, timed with the update. Fix: deactivate it (check 4), then roll back to the previous version with
wp plugin install PLUGIN_NAME --version=PREVIOUS_VERSION --force (for plugins hosted on WordPress.org; --force overwrites the installed copy) and report it to the developer.
- A WordPress core release. Tell:
wp core version shows a new major release and several plugins misbehave at once. Fix: read the known issues guide for that release, then update the plugins that have fixes.
- Page builder CSS or caches out of date. Tell: styled for you, broken for visitors, or builder sections unstyled after a builder update. Fix: regenerate the builder’s CSS, then purge every cache layer together.
- An interrupted update. Tell: the maintenance message, an empty plugin folder, or
Destination folder already exists. Fix: delete .maintenance from the site root, remove the half-installed folder, and install again.
- A WooCommerce update. Tell: database update notice, outdated template warnings under WooCommerce, Status, or checkout errors. Fix: back up, run the database update, then follow the WooCommerce update guide.
- A PHP upgrade by the host. Tell: check 5 shows a new version and errors name old code. Fix: update or replace the old plugin or theme; switch PHP back only briefly while you do.
- Old builder or theme on an inherited site. Tell: a bundled premium plugin (common with WPBakery and Avada) that cannot update without a license. Fix: see the WPBakery and Avada guide.
What it usually is not
- A reason to restore the whole site. A full restore throws away every order, form entry and comment since the backup. Roll back the one item instead.
- Broken WordPress core files. If
wp core verify-checksums passes, reinstalling core will not help.
- Something to fix by updating everything else at once. Change one thing at a time so you know what helped.
- A hack, just because it happened overnight. Check the automatic update email before assuming the worst.
What to send your host or the relevant provider
- To your host: the time it broke in UTC, the fatal error line from check 2, and whether they changed the PHP version or server software.
- A request for the PHP error log around that time if you cannot read it yourself.
- To the plugin or theme developer: the plugin version before and after, the full fatal error line with file and line number, your WordPress and PHP versions, and the other active plugins.
- To your developer: what you already deactivated or rolled back, so nobody repeats or undoes it.
Which guides to read