=== Trilobita Post Pruner === Contributors: trilobita Tags: posts, content audit, stale content, cleanup, maintenance Requires at least: 5.8 Tested up to: 7.0 Stable tag: 1.0.4 Requires PHP: 7.4 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Audit and manage stale posts by age. Find content that has never been updated, then edit, draft, set to private, or trash — all from one screen. == Description == Post Pruner adds a screen under **Posts > Post Pruner** that groups your published posts by age so you can quickly find and act on stale content. **Age buckets** — browse posts that are 1, 2, 3, 4, or 5+ years old, or view all aging content at once. **Sortable dates** — sort by the date a post was created or the date it was last modified, so you can find posts that have never been updated. **Age mode toggle** — choose whether age is calculated from the post's published date or its last modified date. Preference is saved per user. **Never updated badge** — posts that have not been edited since they were published are flagged with a "Never updated" badge in the Modified column. **Single-post actions** — edit, set to draft, set to private, or trash any post directly from the list without leaving the screen. **Safe by default** — actions move posts to Trash (recoverable), never permanently delete them. = Post Pruner Pro = [Post Pruner Pro](https://trilobita.co.uk/plugins/post-pruner) extends the free plugin with: * **All post types** — manage pages and custom post types alongside posts * **Bulk actions** — trash, draft, or set to private in bulk * **Configurable timescales** — choose your own age thresholds (3 months, 6 months, 1 year, and more) * **Content audit log** — a history of every action taken via Post Pruner: who did what, and when * **Scheduled pruning** — set up rules to automatically draft or trash old posts on a schedule == Installation == 1. Upload the `trilobita-post-pruner` folder to `/wp-content/plugins/`. 2. Activate the plugin through the **Plugins** screen in WordPress. 3. Go to **Posts > Post Pruner**. No settings or configuration required. == Frequently Asked Questions == = Does this permanently delete posts? = No. All actions move posts to the WordPress Trash. You can restore them from **Posts > Trash** at any time. = Which post types does the free version support? = The free version works with standard posts only. Post Pruner Pro adds support for pages and custom post types. = Who can access Post Pruner? = Users with the `edit_others_posts` capability — editors and administrators by default. = What does "Never updated" mean? = A post is flagged as never updated when its modified timestamp is within 8 hours of its published timestamp — meaning it has not been meaningfully edited since it was published. The badge appears in the Modified column regardless of which age mode is active. = Does Post Pruner affect frontend performance? = No. All queries run in the admin only and are never executed on the frontend. = Where are the age buckets measured from? = By default, from the post's published date. Use the "Age based on" toggle at the top of the page to switch to Modified date — useful for finding posts that were published long ago and never updated. == Screenshots == 1. The Post Pruner screen showing posts filtered by age with the Never updated badge visible. == Changelog == = 1.0.4 = * Updated: Tested up to WordPress 7.0. * Updated: Age mode toggle now uses the admin theme colour variable so it adapts correctly to the new Modern default admin theme. = 1.0.3 = * Added: Upgrade to Pro link in the Posts menu, visible only when Post Pruner Pro is not active. = 1.0.2 = * Renamed internal prefix from `tpp` to `tripp` to satisfy WordPress.org prefix-length requirement. = 1.0.1 = * Updated plugin name to "Trilobita Post Pruner" throughout documentation. = 1.0.0 = * Initial release. == Upgrade Notice == = 1.0.4 = Confirms compatibility with WordPress 7.0 and updates the admin UI for the new Modern admin theme. = 1.0.3 = Adds an Upgrade to Pro link in the Posts menu when Pro is not active. = 1.0.2 = Internal prefix renamed to satisfy WordPress.org requirements. No functional changes for end users. = 1.0.1 = Documentation update only. No functional changes. = 1.0.0 = Initial release.