Skip to content
S-14

An update broke my site

A critical error, a blank page, a broken layout or a store that stopped working right after an update.

Do this first

Your first three moves

  1. Check which plugin, theme or core version changed last: wp plugin list --fields=name,version,update_version over SSH, or the update email.
  2. Read the newest PHP Fatal error line in the error log. The folder in its file path names the culprit.
  3. Disable or roll back only that one item, then clear every cache. Do not restore a whole backup on a store with new orders.

Diagnose it

Work out what is really wrong

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 updateWhat 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 pageA fatal error with error display off, or memory exhausted.
Briefly unavailable for scheduled maintenance. Check back in a minute. that never goes awayThe 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 loadPage builder CSS not regenerated, or caches still serving old files.
WooCommerce asks for a database update, or checkout failsA 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 sideThe host changed the PHP version.
An email from your site: Some plugins have failed to update or a list of automatic updatesAutomatic 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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

The full fix

Field guides for this symptom

FG-133 Design & builders

WPBakery, Avada or Bricks Broke on an Inherited Site? How to Fix It

Pages full of [vc_row] or [fusion_builder_container] codes, a builder that will not load, or updates you cannot get because nobody has the license. Identify the builder, get it running and sort out licensing on a site you took over.

Read the guide
11 min read

Search the field manual

What is going wrong?

Press / to search from any page, Esc to close