Title: TrucePurge
Author: trucetech
Published: <strong>July 2, 2026</strong>
Last modified: July 2, 2026

---

Search plugins

![](https://ps.w.org/trucepurge/assets/banner-772x250.png?rev=3594434)

![](https://ps.w.org/trucepurge/assets/icon-256x256.png?rev=3594434)

# TrucePurge

 By [trucetech](https://profiles.wordpress.org/trucetech/)

[Download](https://downloads.wordpress.org/plugin/trucepurge.1.2.0.zip)

 * [Details](https://wordpress.org/plugins/trucepurge/#description)
 * [Reviews](https://wordpress.org/plugins/trucepurge/#reviews)
 *  [Installation](https://wordpress.org/plugins/trucepurge/#installation)
 * [Development](https://wordpress.org/plugins/trucepurge/#developers)

 [Support](https://wordpress.org/support/plugin/trucepurge/)

## Description

TrucePurge adds one screen under **Tools  TrucePurge** that turns a slow, click-
by-click cleanup into a few seconds of work. It lays your content out as a Year  
Month  Day  Item tree with live counts, so you can see exactly what you have and
remove exactly what you want.

It is built to be lightweight and to stay out of the way of your other plugins.

**What you can do**

 * Browse Posts, Pages, Images and Videos grouped by year and month, each level 
   showing a live count.
 * Tick an entire **year**, an entire **month**, individual **days**, or single **
   items** — selections cascade and stay in sync with tidy tri-state checkboxes.
 * Use one-click **quick selects**: everything older than 30 days, 6 months, or 
   1 year (precise to the day), or select everything at once.
 * Filter by content type, by post status (Published, Draft, Pending, Private, Scheduled,
   Trash), or by a title keyword.
 * Choose how to remove: **delete permanently** (bypasses the Trash) or the safer**
   move to Trash** (recoverable).
 * Optionally also remove the media attached to the posts you are deleting.
 * **Export a CSV** of your selection first, so you always have a record of what
   was removed.
 * Watch progress on a bar as items are removed — the whole selection goes at once,
   with no artificial cap.

**Built to be safe**

 * Permanent deletion asks you to type the word **DELETE**, enforced on the server
   too, not just in the browser.
 * Every action checks a nonce and a capability, and each item is re-checked against
   your own delete permissions before it is touched.
 * All database reads use prepared statements.

**Built to be conflict-free**

 * Zero front-end footprint: all code runs in the admin only, and CSS/JS load on
   its own screen only.
 * No jQuery dependency (vanilla JS), so it cannot clash with another plugin’s jQuery
   version.
 * Everything is namespaced with a `TRUCEPURGE_` / `trucepurge_` prefix — no global
   functions, no shared option keys, no `wp_ajax_nopriv` hooks.

**For developers**

 * `trucepurge_content_types` — add or change the content types shown.
 * `trucepurge_capability` — change which capability may use the tool (default `
   delete_posts`).
 * `trucepurge_after_delete` — fires after each batch: `do_action( 'trucepurge_after_delete',
   $ids, $user_id, $deleted, $mode )`.

## Screenshots

[⌊The Year <span aria-hidden=⌉⌊The Year <span aria-hidden=⌉→ Month  Day  Item tree with live counts, quick-select chips and the stats bar.” class=”wp-image-9000001″ srcset=”https://i0.wp.com/ps.w.org/trucepurge/assets/screenshot-1.png?rev=3594434&w=300 300w, https://i0.wp.com/ps.w.org/trucepurge/assets/screenshot-1.png?rev=3594434&w=600 600w, https://i0.wp.com/ps.w.org/trucepurge/assets/screenshot-1.png?rev=3594434&w=900 900w” sizes=”(max-width: 599px) 50vw, 33vw” width=”1000″ height=”806″ loading=”eager” fetchpriority=”high” decoding=”async”/>](https://ps.w.org/trucepurge/assets/screenshot-1.png?rev=3594434)

The Year  Month  Day  Item tree with live counts, quick-select chips and the stats
bar.

[⌊Expanding a month to pick individual days and items, with status pills and per-
item edit links.⌉⌊Expanding a month to pick individual days and items, with status
pills and per-item edit links.⌉[

Expanding a month to pick individual days and items, with status pills and per-item
edit links.

[⌊The confirmation step: choose Move to Trash or Delete permanently, with the typed
DELETE safeguard and progress bar.⌉⌊The confirmation step: choose Move to Trash 
or Delete permanently, with the typed DELETE safeguard and progress bar.⌉[

The confirmation step: choose Move to Trash or Delete permanently, with the typed
DELETE safeguard and progress bar.

## Installation

 1. In your WordPress admin go to **Plugins  Add New  Upload Plugin**.
 2. Upload `trucepurge.zip` and click **Install Now**, then **Activate**.
 3. Open **Tools  TrucePurge**.

Or unzip the folder into `wp-content/plugins/` and activate from the Plugins screen.

## FAQ

### Is permanent deletion reversible?

No. A permanent delete is a force delete that bypasses the Trash, which is why the
typed DELETE confirmation exists. If you want a safety net, choose “Move to Trash”
in the confirmation step, or export a CSV first. Make a backup before large cleanups.

### What is the difference between “Move to Trash” and “Delete permanently”?

“Move to Trash” sets items to the Trash so they can be restored later. “Delete permanently”
removes them for good and cannot be undone. Trash is unavailable if your site has
it switched off (EMPTY_TRASH_DAYS set to 0); in that case only permanent deletion
is offered.

### Who can use the tool?

Any user with the `delete_posts` capability can open it, but they can only remove
items WordPress already permits them to remove (checked per item). Raise the bar
with the `trucepurge_capability` filter, e.g. require `manage_options`.

### Does it delete the actual image and video files?

Yes. Removing attachments (Images/Videos) deletes their files from disk. When removing
Posts/Pages you can also tick “Also remove media attached to these items”.

### Will huge sites time out?

The whole selection is sent in a single request and the handler lifts its own time
limit (and keeps running even if the browser disconnects), so large jobs complete
in one pass with a progress bar. There is no cap on how many items are removed at
once.

### Does it slow down my site?

No. It loads nothing on the front end and only loads its assets on its own admin
screen.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“TrucePurge” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ trucetech ](https://profiles.wordpress.org/trucetech/)

[Translate “TrucePurge” into your language.](https://translate.wordpress.org/projects/wp-plugins/trucepurge)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/trucepurge/), check
out the [SVN repository](https://plugins.svn.wordpress.org/trucepurge/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/trucepurge/) by 
[RSS](https://plugins.trac.wordpress.org/log/trucepurge/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.2.0

 * New: branded, colourful admin interface with a content tree, stats bar and status
   colours.
 * New: quick-select chips — everything older than 30 days, 6 months or 1 year (
   precise to the day).
 * New: choice of Move to Trash (recoverable) or Delete permanently, with a safeguard
   so “Trash” never force-deletes when Trash is disabled.
 * New: export the current selection to CSV before removing it.
 * New: Expand all / Collapse all, and an inline result banner instead of pop-up
   alerts.
 * Improved: per-item content-type icons and clearer selection states.

#### 1.1.0

 * Fixed: bulk deletion could stop after a fixed number of items instead of removing
   the entire selection. The cap is removed at every layer — an explicit SQL override
   defeats host/plugin row limits, the ID list is sent as a single field (immune
   to PHP’s max_input_vars), the per-request cap is gone, and the delete handler
   lifts its own execution time limit.
 * Changed: items already gone by the time they are processed now count as removed
   rather than skipped, so a normal run reports no failures.
 * Added: failed requests are retried automatically so a transient blip never ends
   the job early.

#### 1.0.0

 * Initial release.

## Meta

 *  Version **1.2.0**
 *  Last updated **12 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.6 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 7.2 or higher **
 * Tags
 * [bulk delete](https://wordpress.org/plugins/tags/bulk-delete/)[cleanup](https://wordpress.org/plugins/tags/cleanup/)
   [delete media](https://wordpress.org/plugins/tags/delete-media/)[delete posts](https://wordpress.org/plugins/tags/delete-posts/)
 *  [Advanced View](https://wordpress.org/plugins/trucepurge/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/trucepurge/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/trucepurge/reviews/)

## Contributors

 *   [ trucetech ](https://profiles.wordpress.org/trucetech/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/trucepurge/)