Most WordPress problems trace back to one of five things: a plugin or theme conflict, a caching glitch, a misconfigured setting, an outdated core or plugin, or a hosting issue. Confirm the site is actually broken before you touch anything, then work through the specific symptom in order. Back up first, every time.
I’ve been doing WordPress work for over 15 years, and the tickets rarely change, only the client does. A plugin update goes out Friday and the checkout breaks. A host migrates a server and nothing loads. Someone edits the wrong file and the site goes white. It’s always urgent, and it’s usually one of a short list of causes.
This guide walks through that list the way I actually work: confirm what’s broken first, then diagnose the specific symptom before changing anything. Take a backup before you touch plugins, themes, wp-config, or the database. It’s the cheapest insurance there is.
Is your site actually down?
Before you chase a specific error, rule out the boring causes. They account for more “the site is down” tickets than people expect, and none of them are fixed by editing a plugin.
- Check the domain first. A “this site can’t be reached” message, not a WordPress error page, usually means DNS or an expired domain. Look it up at your registrar or run a WHOIS check.
- Confirm it isn’t the host. Check your host’s status page and try a second site on the same account. Everything down on that server means a hosting outage, and the fix is on their end.
- Look for a corrupted .htaccess file. A bad .htaccess can 500 an entire site with nothing to click in wp-admin. Connect over SFTP, rename
.htaccessto.htaccess_old, and reload. If it comes back, resave Settings, then Permalinks, to regenerate a clean one. - Check the PHP version and memory limit. An update that needs a newer PHP version than your host runs will fail quietly. Your host’s control panel shows the active version; the debug log (see the FAQ below) shows memory-exhausted errors by name.
- Ask what changed. Nine times out of ten, something updated right before the site broke. Check the Updates screen in wp-admin, or file timestamps over SFTP if you can’t reach the admin.
Once you’ve ruled out DNS, hosting, and a corrupted config file, the rest of this guide covers the specific symptom you’re looking at.
Why is my WordPress site showing a blank white screen?
A blank page with no error text almost always means a plugin or theme conflict, or PHP hitting its memory limit. Deactivate all plugins (rename the plugins folder over SFTP if you can’t reach wp-admin) and switch to a default theme. If the site comes back, reactivate one plugin at a time until it breaks again; the last one is the cause.
We wrote a full diagnose-first walkthrough for it: how to fix the WordPress white screen of death.
What causes “there has been a critical error on this website”?
This is WordPress’s newer, more informative version of the white screen: same underlying causes, but it emails the site admin and logs more detail by default. Check your inbox and the debug log first; the error usually names the exact file and line. From there, the fix is the same isolation process: deactivate, then reactivate one at a time.
We cover the full recovery steps, including how to read the error email, here: fixing the WordPress critical error message.
What does “error establishing a database connection” mean?
It means WordPress can’t reach its database, a different failure mode from a plugin conflict. Start with the credentials in wp-config.php and confirm they match what your host shows. If those are correct, the database may need repairing, or the host’s database server may be overloaded.
Our full guide walks through the repair path, including the wp-config setting that unlocks WordPress’s repair tool: fixing the error establishing a database connection.
What causes a WordPress 500 internal server error?
A 500 error is the server’s generic “something broke” response, and on WordPress it’s most often a corrupted .htaccess file, a plugin conflict, or a PHP limit being hit. Start with the .htaccess check from the triage section above, then the plugin deactivation test if that doesn’t clear it.
The full breakdown, including server-level causes your host controls, is here: fixing a WordPress 500 internal server error.
How do I find which plugin is causing a conflict?
The reliable method is elimination. Deactivate every plugin, confirm the site works, then reactivate one at a time, checking after each. Whichever reactivation breaks it is your culprit. Can’t reach wp-admin? Rename the plugins folder over SFTP to plugins_old, which deactivates all of them at once.
Two plugins fighting over the same hook, or a caching plugin serving a stale, broken page, are the two most common patterns. If the conflict only shows for logged-out visitors, clear the cache before blaming a plugin.
Why is my WordPress site loading slowly?
Slow load times come from a handful of usual suspects, worth checking in order of what they typically cost you: oversized images, no caching layer, render-blocking CSS and JavaScript from a heavy theme or builder, and underpowered hosting.
Compress images, serve modern formats, turn on caching, defer or minify scripts where your theme allows it, and put a CDN in front of static assets. Still slow after that? The hosting is usually the real bottleneck, not the WordPress install sitting on top of it.
Why can’t I log into wp-admin?
Start with the “Lost your password?” link. If the reset email never arrives, check spam, then confirm your host’s outgoing mail is working (see the email section below). Need in immediately? Reset the password directly in the database through phpMyAdmin, in the wp_users table.
If the login page loads but rejects a correct password, a plugin or security rule is usually interfering. Rename the plugins folder over SFTP, as above, and try again.
Why did my site’s layout break after an update?
A theme, plugin, or core update can ship a CSS or JavaScript change that conflicts with your setup, especially with page builders. It usually breaks one of two ways: styles stop loading and the page looks unstyled, or a script error stops the layout from finishing.
Clear caching and your browser cache first; a stale copy of the old CSS is a common false alarm. If it’s real, check the browser console for a JavaScript error and roll the plugin or theme back while you sort out the conflict.
How do I know if my WordPress site has been hacked?
Watch for unfamiliar admin users you didn’t create, pages redirecting to spam, a spike in outbound traffic, or your host flagging the account for abuse. Search engines showing pages you never wrote is another sign.
A hacked site is not a DIY afternoon project; an incomplete cleanup tends to leave a backdoor for a repeat infection. If you’re seeing any of these signs, that’s exactly the kind of job our WordPress project rescue service handles.
Why isn’t my WordPress site sending email?
Most hosts don’t reliably deliver mail sent through PHP’s default mail() function, which is what WordPress uses out of the box, so forms and password resets silently fail with nothing looking broken. The fix is an SMTP plugin configured with a real transactional email provider.
Already have SMTP configured and mail still isn’t arriving? Check the provider’s delivery log; the failure, a bounced address, a suspended key, is usually visible there before it gets back to WordPress.
| Factor | Figure | Why it matters |
|---|---|---|
| PHP memory WordPress requests by default | 40MB (single site), 64MB (multisite) | A plugin-heavy site can exceed this fast, showing up as a white screen or critical error, not a clear “out of memory” message |
| WP_DEBUG default state | Off in a standard install | Turning it on in wp-config.php is the fastest way to see the actual PHP error, not guess |
| CMS installs outdated at point of infection | 39.1% (all CMS platforms, 2023 data) | An outdated core, theme, or plugin remains a common path to a hacked site |
Source: WordPress.org developer documentation on wp-config.php default memory limits and debugging WordPress; Sucuri’s 2023 Hacked Website & Malware Threat Report (published 2024).
To see the real error behind a white screen or critical error instead of guessing, add these lines to wp-config.php above “That’s all, stop editing!”:
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false );
That logs errors to wp-content/debug.log instead of displaying them on the page, safer on a live site. Turn it back off once you’ve found the issue.
- Confirm it’s actually a WordPress problem, not DNS, hosting, or a corrupted .htaccess file, before editing plugins.
- Deactivate-then-reactivate-one-at-a-time is the fastest way to isolate a plugin or theme conflict.
- WP_DEBUG with logging on shows the real PHP error instead of a blank page or generic message.
- Back up before touching wp-config, the database, or plugins. A backup turns a disaster into a five-minute restore.
How do I stop these problems from happening in the first place?
Most of this page is preventable. Keep core, themes, and plugins updated on a schedule instead of letting them queue up. Use plugins from developers with a real track record, not ones abandoned two years ago. Run backups automatically, off the server they’re backing up. Stay on hosting that can actually handle your traffic and plugin count.
That’s the entire job of a WordPress maintenance plan: updates, backups, and monitoring on a schedule, so these problems happen far less often, and when they do, someone catches them before a client notices.
Some of what’s on this page is a five-minute fix. Some of it is a symptom of something deeper: a half-finished migration, a server misconfiguration, a hack that keeps coming back. When a site is broken beyond a quick fix, that’s what our WordPress project rescue service is for. Send us what’s happening and a senior developer will diagnose the real cause and give you a fixed quote to put it right.
Frequently asked questions
How do I know if my WordPress site is actually down, or just broken for me?
Load the site from a different device or network, or use an outside checker, rather than only refreshing your own browser, which may show a cached copy. If it loads for others but not you, clear your browser cache and DNS cache before assuming the site is broken.
What is WP_DEBUG and should I turn it on?
WP_DEBUG is a WordPress setting that reveals the actual PHP errors behind a blank page or generic message. Turn it on with logging, not on-page display, while troubleshooting, check wp-content/debug.log for the error, then turn it back off. Displaying errors on a live site can expose file paths you don’t want visible.
Why do WordPress problems keep coming back after I fix them?
A recurring problem usually means the fix addressed the symptom, not the cause: a plugin conflict that wasn’t fully isolated, a resource limit that keeps getting hit, or a hack that wasn’t fully cleaned and left a backdoor. If it keeps returning, that’s the point to get a more thorough look rather than repeating the same quick fix.
Can I fix a hacked WordPress site myself?
You can, but an incomplete cleanup is common and often leaves the entry point open for a repeat infection. Removing the obvious malware without finding how the attacker got in tends to mean you’re back here in a few weeks.
When should I stop troubleshooting and call a developer?
When a fix touches the database or wp-config and you’re not confident in the change, when a site is down and every minute costs money, or when the standard steps haven’t held and the problem keeps returning. A recurring issue is usually a sign of something worth a professional look.
Get a free consultation and a fixed quote, usually within one business day, delivered under your agency's brand.