Deleting content should take three seconds, not thirty clicks
You need to clear out a set of stale draft posts, retire a handful of discontinued products, or pull down pages from an old campaign. You know exactly which IDs you want gone. But WordPress makes you go to the list view, filter, check boxes, click Trash, confirm, repeat for every post type. By the time you finish, you've clicked forty times and visited four different admin screens.
That friction turns a five-minute cleanup into something you put off for weeks. The drafts pile up, the discontinued products stay visible in internal searches, and the old pages keep collecting accidental traffic because no one wanted to do the clicking.
What most people do
wp post delete works, but it defaults to permanent deletion. You have to remember the --force flag distinction, have SSH access, and type the full command every time.post_status to trash in the database works until you forget a related meta row, break an index, or trash the wrong ID because the query had a typo.A better way: trash anything from the navigator
TrueCommander gives you three focused commands: delete post, delete page, and delete product. Each one moves the item to the WordPress trash in a single step. You know the ID, you type the command, it's done. The content sits safely in the trash until you choose to empty it or restore it, exactly as if you had clicked Trash in wp-admin.
delete productNothing is ever permanently deleted. All three commands send content to the WordPress trash, the same as clicking the Trash link in wp-admin. You can restore anything from the trash screen at any time. Content is only removed for good when you choose to empty the trash manually. Running the same command on an already-trashed item is safe: the command returns already_trashed and stops there.
What each command does
Three commands, one job: move content to the trash safely, reversibly, and without opening a single list view.
| Command | What it does |
|---|---|
delete post | Moves a post to the WordPress trash. Only works on the post post type. Reversible from wp-admin > Posts > Trash. Idempotent: if the post is already trashed it returns already_trashed. |
delete page | Moves a page to the WordPress trash. Only works on the page post type. Reversible from wp-admin > Pages > Trash. Idempotent: same already_trashed behavior. |
delete product | Moves a WooCommerce product to the trash. Requires WooCommerce. Reversible from wp-admin > Products > Trash. Variable product variations stay in the database but become unreachable while the parent is trashed. |
How it works
filter posts and filter products to pull IDs by status, date, or category straight from the navigator.-id Type tp delete post -id=123, tp delete page -id=456, or tp delete product -id=789. The command checks the post type, confirms the item exists, and moves it to trash.| Detail | Value |
|---|---|
| Command names | delete post, delete page, delete product |
| Required parameter | -id: the numeric ID of the item to trash |
| Post type enforcement | Each command only works on its own post type. Passing a page ID to delete post will not trash the page. |
| Idempotency | Running a command on an already-trashed item returns already_trashed and makes no further changes |
| Variable products | WordPress trash does not cascade to child posts. Variations of a trashed variable product stay published in the database but become unreachable. Restoring the parent makes everything visible again. Permanently emptying the trash removes the variations. |
| Can be used in |
Real example
You ran a spring campaign last year. It generated twelve landing pages, all now stale, all still indexed. Your SEO tool is flagging them as thin content. The post IDs are in a spreadsheet the content team shared.
You open the navigator and run tp delete page -id=1201, then tp delete page -id=1202, working down the list. Each one confirms with "moved to trash." You also have four discontinued jacket products that WooCommerce keeps surfacing in internal search: tp delete product -id=847, tp delete product -id=848, tp delete product -id=851, tp delete product -id=862. Done in under two minutes.
A week later the client decides one landing page should stay. You go to wp-admin > Pages > Trash, restore it, and it's live again. Nothing was permanently lost.
Goes further with TrueCommander
filter posts first Run filter posts to pull all drafts older than a date or all pages in a given category. Copy the IDs straight into delete post or delete page without leaving the navigator.filter products then chains a delete product for each result. One click clears a whole category of discontinued SKUs without touching the list view.filter posts with delete post to automatically trash old auto-draft or pending posts on a weekly cadence. Old noise disappears without anyone having to remember.