← All samples
SAMPLE / DEMO checklist, self-initiated reference material, not client work. Prepared with AI assistance and checked against the WordPress documentation. Take a backup before changing anything.
WordPress "There has been a critical error" / white screen: triage checklist
0. Don't make it worse
- Take a full backup (files and database) or a host snapshot before touching anything.
- Write down what changed recently: a plugin or theme update, a PHP version change, a new snippet, a host migration.
1. Use WordPress's own signals
- Recovery Mode email (WordPress 5.2+): WordPress emails the admin address a special login link that pauses the plugin or theme that broke the site. Check the admin inbox and spam folder.
- Check Tools → Site Health, if the admin area still loads.
2. Get the real error message
// wp-config.php, above "That's all, stop editing!"
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // writes to wp-content/debug.log
define( 'WP_DEBUG_DISPLAY', false ); // keep errors off the public page
@ini_set( 'display_errors', 0 );
- Reload the broken page, then read
wp-content/debug.log. The "PHP Fatal error … in /wp-content/plugins/NAME/…" line usually names the culprit. - Also check the host's PHP error log in the control panel.
3. Isolate plugins and themes
# WP-CLI (SSH): test without plugins/themes loading
wp plugin list --skip-plugins --skip-themes
wp plugin deactivate NAME --skip-plugins --skip-themes
wp plugin deactivate --all --skip-plugins --skip-themes # last resort, then re-enable one by one
wp theme activate twentytwentyfive --skip-plugins --skip-themes
- No SSH? Use SFTP or the file manager: rename
wp-content/plugins/NAME to NAME.off, or rename the whole plugins folder to test. Do the same for the active theme folder (WordPress falls back to a default theme if one is installed).
4. Environment causes
- PHP version: compare it with the versions the plugin and theme support. A recent host upgrade or downgrade is a common trigger.
- Memory: "Allowed memory size exhausted" means raising
define('WP_MEMORY_LIMIT','256M'); and the host's PHP memory_limit.
- Permalinks/.htaccess: if you get 404s or 500s after a move, re-save Settings → Permalinks, or restore the default WordPress .htaccess rules.
- Disk full / file permissions: check the host quota, and that files are 644 and folders 755.
5. Verify core and plugin integrity
wp core verify-checksums
wp plugin verify-checksums --all # works for plugins hosted on wordpress.org
- Unexpected modified files can mean a compromise. If so, treat it as a security incident: restore clean files, rotate passwords and salts, and scan the site.
6. Fix, then roll forward safely
- Update, replace or roll back the faulty plugin (for example with the
wp plugin install NAME --version=X.Y --force command). - Re-enable everything one at a time, testing the home page, a page logged in, checkout or forms, and wp-admin.
- Turn
WP_DEBUG back off and delete debug.log (it can leak paths). - If nothing works within the agreed time, restore the last good backup and debug on a staging copy.
7. Hand-over note to the site owner
Send a short note covering what broke, the root cause, what was changed, and how to avoid it happening again (staging, auto-update rules, backups).