BatchPilot
BatchPilot is a single plugin that replaces the usual stack of bulk-delete, bulk-edit, and duplicate-post plugins. Every action is previewed before it runs, can be undone, and is recorded in a history log you can re-run.
Three operations on posts, pages, and any registered public post type:
- Delete. Trash by default, with a separate permanent option.
- Duplicate. Copies meta, taxonomies, featured image, and optionally child posts.
- Bulk edit. Change status, author, publish dates, taxonomies, password, comment status, or menu order.
Twelve filters narrow the matching set: post type, status, author, date ranges (modified, published), taxonomy terms, has comments, has featured image, parent, children.
Four ways to drive it:
- Admin UI. Stepper-driven Operations Builder with live preview.
- WP-CLI.
wp batchpilot delete,duplicate,edit,history,undo,doctor. - REST API.
/wp-json/batchpilot/v1/*endpoints with capability-gated permissions. - WordPress Abilities API. Each Target × Operation pair is exposed as a registered ability so AI agents and other clients can drive operations.
Safety features:
- Every operation is previewed (count plus sample rows) before it runs.
- Preview tokens (HMAC-signed, 5-minute TTL) prevent stale state from being executed.
- Snapshots are written before mutation so Undo restores the previous state.
- Operations over a configurable threshold (default 100 items) run in the background via Action Scheduler.
- Per-operation capabilities:
batchpilot_delete,batchpilot_edit,batchpilot_duplicate,batchpilot_move,batchpilot_schedule. Grant per-role or per-user.
Use cases:
- Trash old drafts, auto-drafts, or revisions on a schedule.
- Re-attribute posts from a departing author.
- Shift publish dates on a backlog.
- Add or remove taxonomy terms across a content set.
- Duplicate templates or landing pages.
Development
Source code, including the un-minified JavaScript sources for the admin app, lives at https://github.com/jgalea/batchpilot
The compiled assets in assets/build/ are generated with @wordpress/scripts from the sources in assets/src/. To rebuild:
npm install && npm run build
PHP dependencies are managed with Composer (composer install).