Skip to content
Guide

November 5, 2026

“There has been a critical error on this website”: how to fix it in WordPress

WordPress shows a critical error? How to get back into the admin area, find the plugin in the error log and know when it is time to get help.

“There has been a critical error on this website”: how to fix it in WordPress
Contents

The message means PHP stopped with a fatal error while loading the page, usually because of a plugin, a theme or a new PHP version. Your content is stored in the database and is normally not affected. The fastest way back into the admin area is the email from WordPress with the subject “Your Site is Experiencing a Technical Issue”. If none arrives, open /wp-login.php once, because the error only triggers the email there or in the admin area. If that does not help, switch off the plugins via FTP.

From 19 August 2026 I received a striking number of emergency calls with exactly this message: the update to WordPress 7.1, together with the WP Rocket plugin, took websites down. The fix is in Fatal error after WordPress 7.1. The process below applies to any other trigger.

Which route fits your situation

Your situationWhat helps
The email from WordPress arrivedOpen the link in the email
Website broken, login worksLog in, switch off the plugin
No email, no admin areaSwitch off plugins via FTP
Only one page is affectedRead the error log
No access to your hostingCall your host or get help
Unknown files, redirectsPossible hack, get help

What the message means

Since WordPress 5.2, a dedicated mechanism catches fatal PHP errors. Instead of a white screen, WordPress shows a short notice and tries to identify the plugin or theme at fault (description by the WordPress core team). Warnings do not trigger it, only errors that make PHP stop.

The wording already tells you something. On the public website, current versions only say “There has been a critical error on this website.” At that point WordPress has not sent an email. On the login page or in the admin area it says “There has been a critical error on this website. Please check your site admin email inbox for instructions.” Older versions say “on your website”, which means the same.

The route via email: recovery mode

  1. Search the inbox of the administration email address for the subject “[Your site name] Your Site is Experiencing a Technical Issue”, including the spam folder. The email names the plugin or theme that caused the error.
  2. Open the link and log in. The admin area now runs in recovery mode and the faulty plugin is paused.
  3. Deactivate or update the plugin under Plugins. Until then the website stays broken for your visitors, because it is only paused for you.
  4. Click “Exit Recovery Mode” in the toolbar at the top and check the website in a private browser window.

The link is valid for one day. If the error occurs again after that, WordPress sends a new one.

Why no email arrives

The spam folder is only one reason of several. The WordPress source code explains the others:

  • The error only occurs on the public website. WordPress only sends the email if it happens on the login page, in the admin area or during certain admin actions. So open /wp-login.php and /wp-admin/ once and wait a few minutes.
  • The email has already gone out. WordPress sends at most one in 24 hours. Look for emails from the day before too, especially if an automatic update ran overnight.
  • The address is out of date. The email goes to the administration email address under Settings → General, for example still the mailbox of the agency that built the website.
  • The error does not come from a plugin or theme, but for example from a must-use plugin or a damaged WordPress file. Then no email is sent.
  • The server does not send email reliably. Then only the next route helps.

Without the email: switch off plugins via FTP or file manager

For this you need FTP access or the file manager in your host's customer menu (WordPress guide to common errors).

  1. If you know which plugin is at fault, rename only its folder in wp-content/plugins, for example wp-rocket to wp-rocket-off. That is enough.
  2. If you do not know, rename the whole plugins folder to plugins-off and log in to the admin area.
  3. Open the Plugins page in the admin area once. Only this visit deactivates the missing plugins for good. If you rename the folder back before that, the error returns immediately.
  4. Rename the folder back to plugins and activate the plugins one by one until the error returns. The last one you activated is the culprit.

If the website does not run without plugins either, the theme is often at fault. Rename the folder of the active theme in wp-content/themes, and WordPress falls back to an installed default theme. With SSH access, switching off all plugins is quicker: wp plugin deactivate --all --skip-plugins --skip-themes (WP-CLI documentation).

Reading the error log: how to see what is at fault

Instead of testing every plugin in turn, you can often read the culprit off a single line. Some hosts show an error log in the customer menu. Otherwise WordPress can write one: open wp-config.php via FTP and replace the line define( 'WP_DEBUG', false ); with these three:

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );

Errors now go to the file wp-content/debug.log, and your visitors do not see them (WordPress documentation). Open the broken page once, then open the file. The case from August looked like this:

Uncaught TypeError: substr(): Argument #1 ($string) must be of type string, int given in …/wp-content/plugins/wp-rocket/…/Cloudflare.php:562

What matters is the path after the word “in”: /plugins/wp-rocket/ names the plugin, /themes/ would name the theme. If it says wp-includes, a plugin has usually called WordPress incorrectly, and the list of calls in the lines below helps. These messages come up often:

  • Allowed memory size of … bytes exhausted: PHP memory is full. Only then does it help to raise the limit in wp-config.php, for example with define( 'WP_MEMORY_LIMIT', '256M' ); (WordPress documentation). That only works up to the limit your hosting plan allows.
  • Uncaught TypeError or Call to undefined function: a plugin or theme does not match the WordPress or PHP version. Update or deactivate it. Call to undefined function get_field(), on the other hand, usually means that a template needs Advanced Custom Fields but the plugin is deactivated.
  • syntax error, unexpected: there is a typo in the code named, often after a change to functions.php or a code snippet. The line number is included.
  • Failed opening required: a file is missing, often after an interrupted update. Upload the plugin named again.

Afterwards, set WP_DEBUG back to false and delete debug.log. The file sits in the wp-content folder, can often be opened in a browser and reveals paths and details of your installation.

If the error appeared without you doing anything

If you changed nothing, something probably ran in the background: an automatic plugin update or a new PHP version at your host. Check in the customer menu which PHP version is active. WordPress currently recommends PHP 8.3 or newer, and old plugins do not always cope with that.

As an emergency measure, you can switch back to the previous PHP version in the customer menu until the plugin has been updated. Do not go below a version that still receives security updates: according to php.net that is currently PHP 8.2, and only until 31 December 2026. Because of the PHP2Shell flaw, it should be at least 8.2.35, 8.3.36, 8.4.27 or 8.5.12.

If only one page or menu item is affected

If everything else works and only one page or menu item shows the message, PHP stops only there. In the WordPress forums this comes up with the WooCommerce product list or the Site Kit settings, for example. Switch on the error log as above and open exactly that page.

If you run a store, also check WooCommerce → Status → Logs. WooCommerce records fatal errors there under the source fatal-errors.

When to get help

I would stop trying yourself if one of these applies:

  • A store or a booking system is down and every hour costs money.
  • You have no access to your hosting or FTP.
  • The website does not run without plugins and with a default theme either.
  • The log or the folder shows plugins and PHP files you do not recognise. The website may have been hacked, so get in touch.

Do not rush to restore a backup. Orders, enquiries and posts since that backup would be gone, and the error returns as soon as the next update runs. A backup is the last step, when the cause cannot be found.

How to avoid the next outage

  • Install updates with a backup and in the right order: Installing WordPress updates the right way.
  • Check the administration email address. Someone has to read that mailbox.
  • Test major updates and every PHP change on a staging copy first.

If you would rather not keep an eye on this yourself, I take care of it as part of WordPress support.

Frequently asked questions

What does “There has been a critical error on this website” mean?

PHP stopped with a fatal error while loading the page, usually because of a plugin, a theme or a new PHP version. WordPress shows this notice instead of a white screen. Your content in the database is normally not affected.

Why can I no longer access my WordPress site?

If the faulty plugin loads on every page, the login breaks as well. You get back in through the link in the email from WordPress, or by renaming the plugin folder via FTP or your host's file manager.

Why am I not getting an email from WordPress?

WordPress only sends it when the error occurs on the login page or in the admin area, and only once in 24 hours. So open /wp-login.php once and check the spam folder and the administration email address. If the error does not come from a plugin or theme, no email is sent.

How long is the link in the email valid?

One day. If the error occurs again after that, WordPress sends a new link.

Does raising the PHP memory limit help?

Only if the error log says “Allowed memory size … exhausted”. For any other error, a higher limit does nothing about the cause.

Is my content lost?

Normally not. Posts, pages and orders are stored in the database; the error only stops the page from loading. So do not rush to restore a backup, or everything since that backup would be gone.

Could a hack be behind it?

That does happen. Unknown PHP files, plugins you never installed and redirects to other sites are suspicious. Then switching off the plugin is not enough; the website has to be cleaned up.