Why Your WordPress Site Keeps Getting Hacked Again

Table of Contents

Quick answer: If your WordPress site keeps getting hacked, the previous clean-up almost certainly removed the visible malware but left the attacker’s way back in untouched, whether that’s a hidden admin account, an unpatched plugin, or a scheduled task quietly re-downloading the infection. Stopping it means finding and closing that entry point, not just deleting files a second time.

Cleaning a WordPress site once is straightforward. Cleaning it, watching it get reinfected a few weeks later, and cleaning it again is a sign that something specific was missed the first time round, not bad luck. Attackers who compromise a WordPress site rarely rely on breaking in the same way twice. Their first move after gaining access is usually to plant a second, quieter way back in, precisely so a scan-and-delete clean-up doesn’t actually lock them out. This guide covers why that happens, exactly what to check for, and what genuinely stops it happening a third time.

43%of UK businesses hit by a cyber attack or breach in the past year
46%of small businesses specifically affected, per the same survey
72 hrsICO reporting window if customer data was exposed
4backdoor types worth checking for after any WordPress clean-up

According to the UK Government’s Cyber Security Breaches Survey 2025/2026, 43% of UK businesses experienced a breach or attack in the last 12 months, rising to 46% among small businesses specifically. Phishing and exploited software vulnerabilities remain the two most common routes in, which is exactly why an outdated plugin or a reused password is usually the root cause behind a WordPress site that won’t stay clean.

Why WordPress Sites Get Reinfected After a Clean-Up

Most WordPress attacks are automated rather than personal. Bots crawl the web looking for sites running outdated plugins, themes, or WordPress core with known, published vulnerabilities, then exploit whatever they find. Once inside, the priority isn’t usually to deface the site or cause obvious damage straight away. It’s to secure ongoing access, in case the visible malware gets spotted and removed.

That’s the step most quick clean-ups skip. A scanner or security plugin removes the malicious code it recognises, the site looks clean, and everyone assumes the job is done. If the vulnerability that let the attacker in was never patched, and nobody checked for a hidden way back in, reinfection isn’t a possibility, it’s a near certainty. If you haven’t confirmed your site is currently affected, our guide on the signs your WordPress site has been hacked is worth checking first.

The Backdoors Attackers Leave Behind

A backdoor is any hidden method an attacker sets up so they can return without needing to exploit the original weakness again. These are the four we come across most often when a WordPress site keeps getting reinfected:

  • A hidden administrator account. Given a plausible username, it blends in with your genuine team members unless someone checks the full user list line by line.
  • A disguised PHP file in the uploads folder. The /wp-content/uploads/ directory is meant to hold media, not executable code, which is exactly why it’s a favourite hiding spot for a script with an innocuous-looking file name.
  • A modified core, theme, or plugin file. A small amount of malicious code inserted into an otherwise legitimate file, so the file still works normally and doesn’t obviously break anything.
  • A scheduled task re-downloading the malware. WordPress has its own task scheduler, and a hidden cron job can quietly reinstall the infection on a timer, days or weeks after the original clean-up looked successful.

Any single one of these left in place undoes a clean-up within days. A thorough fix has to rule out all four, not just remove whatever malware happened to trigger the alert.

Passwords and Access You Must Change After Any Infection

Once an attacker has had access to your site, treat every credential connected to it as compromised, not just the one that was obviously misused. That means changing:

  • WordPress admin passwords for every user account, not only the one that looked affected
  • FTP or SFTP login credentials used to upload files
  • Your hosting control panel password (cPanel, Plesk, or your host’s equivalent)
  • The database password, updated in both the database itself and your wp-config.php file
  • API keys and any third-party integrations connected to the site
  • The email account tied to the WordPress admin login, since access to that inbox can be used to reset everything else

Order matters here. Changing passwords before removing a backdoor achieves nothing, since an attacker with a working backdoor can simply reset them again. Both need to happen as a single step, not one after the other.

How to Confirm the Clean-Up Actually Worked

A malware scan coming back clean is not the same as the site being secure. A proper check after any clean-up should include comparing WordPress core, theme, and plugin files against fresh, official copies to spot anything altered, reviewing the complete list of user accounts and scheduled tasks rather than just the ones that look obviously wrong, and running more than one reputable malware scanner, since different tools recognise different infection signatures. It’s also worth checking whether your domain has landed on any blacklists, and keeping an eye on that for one to two weeks after the clean-up, since some backdoors are built to stay dormant briefly before reactivating.

If you’re still in the middle of dealing with an active infection, our step-by-step guide to recovering a hacked WordPress site covers the immediate actions to take before you get to this stage.

What we check first: When a business comes to us because a WordPress site has been hacked more than once, our first step is establishing whether the previous clean-up removed the actual point of entry or only the symptoms. That means pulling the full user list, checking for scheduled tasks nobody on the team created, and comparing core files against a clean WordPress install. In the repeat infections we’ve investigated, it’s rare to find that every entry point was closed the first time around.

Ongoing Checks That Stop Reinfection

A clean-up only ever solves today’s infection. Preventing the next one needs a routine that keeps running long after the immediate scare has passed:

Check Frequency Why it matters
Update WordPress core, theme, and plugins Weekly Closes newly discovered vulnerabilities before bots start using them
Run a malware scan Weekly Catches reinfection early, before it spreads or gets flagged by Google
Review user accounts Monthly Flags any admin or editor account your team didn’t create
Verify backups actually restore Monthly Confirms you can recover cleanly if reinfection happens again
Rotate admin passwords Every 3 to 6 months Limits the value of any credentials that may have leaked elsewhere

Tested, working backups matter just as much as the checks above. Our guide on website backups for business covers how often to back up and where those backups should live, so a reinfection becomes a quick restore rather than a repeat of the original crisis.

DIY Hardening vs Getting Professional Help

Whether to handle this yourself or bring in specialist support usually comes down to how confident you are checking for the backdoors above, and how much it costs your business if the site goes down again.

✓DIY hardening works if…

  • Someone on your team is comfortable working with files via FTP and reviewing user lists directly
  • The site is small, with a limited number of plugins and no e-commerce or stored customer data
  • You have time to methodically check every file, user, and scheduled task, not just run a single scan
  • You have a recent, verified clean backup to fall back on if something goes wrong

!Professional help makes more sense if…

  • The site has been reinfected more than once, which usually means a backdoor was missed originally
  • Customer data, payment details, or a membership area is involved
  • You don’t have a confirmed clean backup to restore from
  • The site generates revenue or enquiries and every hour of downtime has a real cost
  • You want ongoing monitoring in place afterwards, rather than facing this again in a few months

Our WordPress malware removal service is built around exactly this pattern of repeat infection. We check for hidden admin accounts, disguised files, and scheduled tasks as standard, not only the malware that triggered the original alert, and confirm the site stays clean afterwards. For ongoing protection once the site is secure, a WordPress care plan keeps the checks in the table above running automatically.

If Customer Data Was Affected, This Isn’t Just a Technical Job

If the infection exposed customer records, payment details, or any other personal data, that moves the situation from a technical clean-up into a legal obligation under UK GDPR. Where a personal data breach is likely to result in a risk to people’s rights and freedoms, you’re required to notify the Information Commissioner’s Office (ICO) within 72 hours of becoming aware of it. The NCSC’s small organisations guide to cyber security is a useful reference for what counts as “affected” and what your wider obligations are once a breach is confirmed. A repeat infection is a fresh incident that needs assessing on its own terms, not treated as a continuation of whatever was reported the first time.

Document what data the compromised area of the site held, how long the attacker had access, and what steps you’ve taken to close the gap. This record matters both for the ICO and for reassuring any customers you need to notify directly.

Frequently Asked Questions

Can WordPress malware come back even with a security plugin installed?

Yes. Security plugins are good at detecting known malware signatures, but they can’t remove a backdoor they don’t recognise, such as a hidden admin account or a modified core file that still functions normally. A plugin reducing new infections isn’t the same as confirming an existing backdoor has been closed.

How long should I keep monitoring a site after cleaning up malware?

At least one to two weeks of close monitoring, including daily scans and blacklist checks, is a reasonable minimum, since some backdoors are designed to stay dormant briefly before reactivating. After that, weekly scans as part of an ongoing routine are what actually prevent the next infection, rather than catching this one late.

Does moving to a new host stop reinfection?

Not on its own. If the vulnerability was in an outdated plugin, a stolen password, or malicious code sitting in the site’s files, moving hosts changes nothing unless that specific issue is fixed and every credential is changed first. A new host with the same weaknesses gets reinfected just as quickly.

Why does my WordPress site keep getting hacked after I clean it myself?

This is usually a sign that a backdoor, rather than the original vulnerability, was missed during the clean-up. Manual clean-ups that only remove obviously malicious files, without checking user accounts, scheduled tasks, and core file integrity, tend to leave attackers with a working way back in.

How much does professional WordPress malware removal cost?

Costs vary depending on how deeply the site has been compromised and whether customer data was involved, but a thorough clean-up that includes backdoor removal, credential resets, and post-clean-up monitoring is generally a worthwhile investment set against the cost of repeated downtime and reinfection.

Worried the Malware Will Come Back?

If your WordPress site has been hacked more than once, cleaning it again without finding the backdoor will only buy a few more weeks before it happens again. We investigate the full scope of the infection and put monitoring in place afterwards.

Get a Free IT Audit

If your WordPress site has been hacked more than once, treat that as a sign the previous clean-up left something behind, not bad luck. Close every access point, change every credential involved, and put the checks above in place, and reinfection stops being something you have to keep worrying about.

Table of Contents