“There Has Been a Critical Error on This Website” — What It Means and How to Fix It

This isn't a blank page and it isn't a raw server crash — it's WordPress itself catching a fatal error and telling you about it, sometimes with a way back in already sitting in your inbox. Here's what's actually failing and how to get past it.

Browser window showing WordPress's own critical error message with a warning icon, beside a recovery-mode email envelope
WordPress caught this one itself — which is exactly why there's usually a way back in without touching a file.

What is the problem?

“There has been a critical error on this website” is a specific message with a specific meaning: it's WordPress itself, not your web server, catching a fatal PHP error and stepping in before it can print a raw, unstyled crash straight to the screen. It usually comes with a “Learn more about troubleshooting WordPress” link, and if your site can send email, an admin recovery-mode notice lands in your inbox with a one-time login link built specifically to get you back into a working dashboard.

Quick answer: WordPress's fatal-error protection (built in since version 5.2) is doing its job here — it's not letting a broken plugin or theme take the whole site down without a way back in. The fastest fix usually starts in your email inbox, not your FTP client.

That distinction is worth sitting with for a second, because it changes where you start. A raw 500 error means the server crashed before WordPress had any say in the matter. A blank white screen usually means WordPress died silently, with error reporting turned off. This message means WordPress caught something breaking, wrapped it in a friendly notice, and is actively trying to hand you a route back in. It's the most “recoverable-looking” of the site-down failures, and in practice it usually is the fastest to resolve, once you know where to look.

Common symptoms

  • The front end shows WordPress's own styled message, not a bare browser or server error page, often including the “Learn more about troubleshooting WordPress” link
  • The wp-admin login screen itself frequently still loads and lets you log in, even while the rest of the site is down
  • An email titled something like “Your Site is Experiencing a Technical Difficulty” may already be sitting in your inbox (or spam folder) with a recovery-mode login link
  • The error appeared right after a plugin auto-updated overnight, or right after you or someone else edited a theme file
  • Sometimes only the front end is affected while the dashboard works completely normally, because the fatal only triggers on a template a visitor loads
  • Reloading the page shows the exact same message every time, with no variation

Why does this happen?

Since WordPress 5.2, core ships with fatal-error protection specifically so that one broken plugin, one bad theme edit, or one PHP incompatibility doesn't leave a site owner staring at a wall of raw code with no way to log in and fix it. When PHP hits a fatal error — calling a function that doesn't exist, redeclaring a class, referencing a method that was removed — WordPress's error handler intercepts it, logs what it can, shows this message instead of the raw error, and, if outgoing mail works, sends the site's admin a recovery-mode link that temporarily works around the broken code long enough to log in safely.

The underlying cause is almost always a mismatch introduced somewhere in the stack: a plugin that updated itself to a version your PHP release doesn't support, a theme file edited directly without testing, or two extensions independently trying to use the same function or class name. None of that is a WordPress bug — it's WordPress's safety net catching a bug that lives somewhere else.

Common technical causes

  • A fatal PHP error inside a specific plugin or theme — an undefined function, a redeclared class, or a call to a method that no longer exists after an update
  • A plugin auto-updated to a version that dropped support for your site's current PHP version, which is common when a site has been running an older PHP release for a long time
  • Two plugins independently declaring the same function or class name, which PHP cannot resolve and fails outright rather than picking one
  • A theme's functions.php edited directly — through the old built-in Theme Editor or via FTP — with a typo or a missing bracket
  • A plugin update shipping genuinely broken code, rarer but not unheard of, especially with smaller or less actively maintained plugins
  • PHP's memory limit being exhausted hard enough that WordPress's own handler catches it as a fatal, rather than the process dying before WordPress gets a chance to respond, which is more typical of a raw server-level 500 error
  • A corrupted plugin file left behind by a partial or interrupted auto-update, often after a hosting timeout mid-update

How to diagnose it

  1. Check your email first, including spam. This is the fastest and safest starting point, and it's unique to this specific error — a working recovery-mode link means you can skip straight to a guided fix inside wp-admin.
  2. If WP_DEBUG_LOG is enabled, open wp-content/debug.log and look for a line starting PHP Fatal error:, which names the exact file and line number responsible.
  3. If there's no debug log, check your host's raw PHP error log instead, through your hosting control panel or via FTP/SSH — the same fatal-error line will be there.
  4. Use the recovery-mode dashboard once you're logged in via the email link — WordPress often names the specific plugin or theme it flagged directly on that screen, so you may not need to dig any further.
  5. Note the timing. If the error appeared overnight or first thing in the morning, check which plugins are set to auto-update; that timing is rarely a coincidence.

How to fix it, step by step

  1. Open the recovery-mode email link if one arrived. It puts you into a safe version of wp-admin where the failing plugin or theme is temporarily paused, and gives you a direct Manage Plugins / Manage Themes panel to deactivate the flagged extension — no FTP required.
  2. If no email arrived, connect via FTP or your host's File Manager and rename the suspect plugin's folder inside wp-content/plugins (for example, add -off to the folder name). This deactivates it instantly without needing to log in first.
  3. Read the exact fatal-error line from the log before guessing which plugin is at fault — it will name the file and often the exact function that failed.
  4. Check that plugin's changelog or support page for a known PHP-compatibility issue against your site's current PHP version, which is the single most common root cause of this specific error.
  5. Update the plugin to its latest release if the fatal is already patched upstream, or roll it back to the last known-working version if the newest release is itself the problem.
  6. If the fatal traces to a theme's functions.php from a direct edit, restore the previous version of that file via FTP or your host's automatic file backups.
  7. Turn on WP_DEBUG_LOG by adding define('WP_DEBUG_LOG', true); to wp-config.php if it wasn't already active, so any future fatal leaves a specific trace instead of only the generic message.
  8. Confirm outgoing email is actually configured using an SMTP plugin, since a large share of sites never receive the recovery email at all because PHP's default mail function is blocked or unreliable on their host.
  9. Clear any object cache or opcode cache once the fix is in place, so the corrected code is what's actually being served rather than a cached copy of the broken version.

When this needs professional help

Plenty of these resolve in minutes once you find the flagged plugin. It's worth bringing in a developer when:

  • No recovery-mode email ever arrives and there's no FTP or File Manager access already set up
  • The fatal traces into a core WordPress file rather than a plugin or theme, which is rare but needs careful, precise correction
  • Fixing one fatal error reveals a second one underneath it, suggesting more than one thing broke at once
  • You're not confident reading a PHP stack trace or safely rolling a plugin back to a previous version
  • The site is business-critical and you'd rather not test fixes live without a staging copy first

How I can help

This is one of the more solvable-looking WordPress failures, and also one where guessing wastes real time — deactivating plugins at random when the log already named the culprit. I read the actual fatal-error line first, confirm the plugin or PHP version combination that caused it, and apply the smallest fix that gets the site fully back, whether that's a version rollback, a compatibility patch, or a proper rebuild of a theme file that was edited directly. That's been the day-to-day reality of eleven years of WordPress and web development work: most of it isn't glamorous, it's reading logs correctly and not guessing.

RELEVANT WORK

Sites I've kept stable through updates like this

Two builds where plugin and theme stability was as much the job as the design itself.

Canvascroft

A live subscription creative service on Elementor and WooCommerce, where a fatal error during a plugin update would mean lost bookings, not just a broken page.

  • WordPress
  • Elementor
  • WooCommerce

FAQ

Questions about a WordPress critical error

What people ask before sending over the site.

Is this the same as a WordPress 500 error?

No, and the difference matters for fixing it. A 500 error is the web server itself failing before WordPress gets a say in the matter, so you see a plain, unbranded error page from Apache, Nginx or your host. A critical error is WordPress's own fatal-error handler catching a PHP failure and showing you its own styled message, usually with a recovery-mode option. If you see WordPress's own wording, you're in the right place; if you see a bare server error page, check the 500 error guide instead.

Why didn't I get the recovery-mode email?

Almost always because outgoing mail isn't actually configured on the server. WordPress sends this email using PHP's built-in mail() function by default, which a large share of hosts block, throttle or silently drop for anything that isn't sent through a proper SMTP connection. If you've never set up an SMTP plugin, there's a good chance every WordPress email, not just this one, has been going nowhere.

Will using the recovery-mode link change anything on my site?

No. It's a one-time, time-limited login link that puts you into a safe diagnostic view of wp-admin, similar to logging in normally, just with the broken plugin or theme temporarily paused so you can actually see the screen. It doesn't delete, disable permanently, or change anything until you choose to deactivate something yourself.

Does a critical error mean my site was hacked?

Usually not. The overwhelming majority of these are a straightforward code compatibility issue: a plugin update, a PHP version change, or a theme edit that introduced a fatal error. It's worth being alert if it's paired with other signs, like unfamiliar admin users, unexpected outbound emails, or files you didn't create, but on its own a critical error is a compatibility problem, not a break-in.

Can I just wait for it to fix itself?

No. A fatal PHP error is a hard stop in the code; nothing about waiting changes what's written in the file that's failing. The one exception is if the cause was a scheduled auto-update that's still mid-process, in which case give it a few minutes and reload before assuming it's stuck.

Can I fix this without FTP or SSH access?

If the recovery-mode email arrives, yes — the Manage Plugins and Manage Themes panel inside recovery mode lets you deactivate the flagged extension entirely from the browser. Without that email, you'll need some way to reach the files directly, whether that's FTP, your host's File Manager, or SSH, since there's no other way to disable a plugin that's crashing before wp-admin can load.

How do I stop this from happening again?

Get outgoing email actually working so the recovery link reaches you next time, keep plugins and PHP versions reasonably close together rather than letting one lag for years, and test major plugin or PHP updates on a staging copy first if the site is business-critical. None of that prevents every fatal error, but it turns the next one into a five-minute fix instead of a support ticket.

Available for new projects

NEXT STEP

Need help fixing this WordPress issue?

Send me your website and I'll help identify the problem — no charge just to take a look. Based in Dhaka, Bangladesh, working with clients worldwide, with a reply within one working day.

  • Reply within one working day
  • Fixed quote before work starts
  • UK, EU and US hours covered