Posts, pages, products and media moved to Trash don’t leave the database — they sit there, still taking up space and still appearing in some queries, until something explicitly empties Trash. WordPress does this automatically after 30 days by default, but that automatic cleanup depends on scheduled tasks running, which on many sites, silently doesn’t happen.
Before you buy, one quick look
Read-only. Go to Posts, Pages, Products and Media in turn, and check the number shown next to “Trash” at the top of each list — WordPress shows this natively without needing any extra tool.
A high number on any of these, especially one that’s clearly been sitting for a long time, confirms this is worth clearing.
Checking all four screens rather than just one gives a fuller picture, since a store often trashes products and media at a very different rate to how it trashes blog posts or pages, and one screen showing a modest number doesn’t mean the others will too, so it’s worth actually looking at all four screens in turn rather than assuming the pattern seen on just one of them necessarily carries over to the rest of the site.
Trashed content permanent removal
Trash counts across your posts, pages, products or media have been climbing for months. We review, clear it safely, and fix why automatic emptying wasn't happening.
- Full backup taken before we start
- If we can’t fix it, you get your money back
- We never ask for your own password
This or something else?
| High Trash counts confirmed across posts, pages, products or media | This fix covers it |
| Trash items you specifically want reviewed before permanent deletion | This fix covers it, with a review step added |
| General database size concern beyond just trashed content | Database size audit & reduction report |
| Content deleted that you actually want recovered | Only possible if within the retention window; ask before ordering this fix |
| Scheduled tasks not running generally, trash cleanup just one symptom | WP-Cron not firing |
What you are seeing
- A high “Trash” count showing on Posts, Pages, Products or Media list screens
- Trashed content sitting for months or years without being emptied
- Database size flagged as large with trashed content specifically implicated
- No indication anyone has manually emptied Trash on a regular basis
- Trash counts climbing steadily as content is deleted but never fully removed
Common causes
- WordPress’s automatic 30-day Trash emptying depending on a scheduled task that isn’t running
- A site owner manually deleting content by moving it to Trash and never taking the second step
- Bulk deletions during a cleanup or migration, with Trash never subsequently emptied
- A low-traffic site where nothing triggers the scheduled cleanup task often enough
- A plugin or workflow that trashes content routinely as part of its normal operation
What we do
- Review what’s actually sitting in Trash across posts, pages, products and media
- Confirm nothing was trashed by mistake and still needed, before permanent removal
- Permanently remove confirmed trash across all relevant content types
- Fix or configure the scheduled task responsible for automatic Trash emptying going forward
- Set a sensible retention period if the default doesn’t suit how you work
- Re-check Trash counts to confirm a real, measured reduction
What is included
- Trashed content reviewed and permanently removed across content types
- A check to catch anything trashed by mistake before final removal
- Automatic Trash emptying corrected so this doesn’t silently reaccumulate
- The pre-removal backup, kept for 30 days
Not included
- Recovering content that’s genuinely wanted back, if that’s discovered during review
- General database cleanup beyond trashed content specifically
- Ongoing manual review of what goes into Trash day to day
- Fixing a broader WP-Cron problem beyond this specific scheduled task
Questions about this fix
Will you check before permanently deleting anything?
Yes — we review what's in Trash and flag anything that looks like it might have been trashed by mistake, rather than emptying everything automatically without a look.
Can permanently deleted content ever be recovered afterwards?
No, once genuinely and permanently removed it's gone, which is exactly why the review step happens first, and why we keep a backup for 30 days as a safety net regardless.
Why does WordPress's automatic 30-day Trash emptying not seem to work?
It runs via the same scheduled task system that handles other background jobs, and if that system isn't firing reliably, Trash cleanup is one of several things that quietly stops happening along with it.
Is a large Trash count actually costing me anything?
It adds to database size and to what backups have to process, though the cost is usually modest compared to other kinds of bloat — still worth clearing, particularly if it's been building for years.
Can I set Trash to empty sooner or later than 30 days?
Yes, WordPress supports changing that interval, and we can set it to whatever suits how you actually use Trash, rather than leaving the default unless you tell us otherwise.
Related fixes
If this is the second time this year
A bad update breaking the site is a symptom of updates not being tested first. Care plans run every update on a staging clone before it reaches your live site, which is the actual fix for this happening again.
Your access, your rules
Create a separate admin account for us and delete it when we are done. For anything else, we get in touch and agree a method — never a form field on this site, never by reply to an email.
We back up first, always
Before anything is touched we take a full backup and keep it for 30 days. If a fix goes wrong, we put the site back exactly as it was.
If it is not what you bought
If the problem turns out smaller than what you ordered, we refund the difference. If it is bigger, we stop and send a quote before doing any extra work.
If we cannot fix it
You get back what we received. Diagnosis is on us — you only pay when the problem is actually solved. The payment processor takes its fee before the money reaches us, so we never hold it and it is not ours to return. That is true here as everywhere else.
If it comes back
Reply within seven days of delivery and we put it back on the bench at no cost. The fix is not finished until it holds.
What we are responsible for
If something goes wrong with a fix, our responsibility is limited to what you paid for it. We take a full backup first so mistakes can be undone, and we tell you before doing anything outside what you bought.