Finding specific posts in WordPress is slow
You want every draft that hasn't been updated in 60 days so you can clean them up. WordPress's post list lets you filter by status or author, one at a time. Combining filters means exporting to CSV or writing a custom WP_Query.
For automations — "auto-publish every draft older than 30 days that has a featured image and a category assigned" — you need a programmatic filter the plugin gives you for free.
What most people do instead
A better way: combine filters, loop in macros
Run filter post with any combination — post type, status, category, tag, author, featured image presence, content length, last modified date. Each match comes with full post details and feeds into a macro's for_each loop.
Combine with update-post-meta for bulk changes. Filter posts matching a pattern, then for_each apply the same meta update. "Tag every draft older than 30 days with review_needed=1" is two macro steps.
How it works
Builds a WP_Query with the filters you pass, returning posts with full details (ID, title, status, author, categories, tags, dates, featured image URL, content excerpt). Default limit 200. Pass -limit=-1 for unbounded.
| Parameter | Value |
|---|---|
-post_type | post, page, or any custom post type slug |
-status | publish, draft, pending, private, trash |
-category / -tag | Term slug |
-author | User ID or username |
-no_image | true to find posts missing featured images |
-min_length / -max_length | Word count thresholds |
-modified_from / -modified_to | Last-modified date range (absolute or phrases) |
| Can be used in |
Real example
You have 300 posts on your blog, 47 of which are drafts you've abandoned. Every quarter you mean to clean them up. You never do.
You build a macro: filter post -status=draft -modified_to="90 days ago" → for_each: update_post_meta with cleanup_flag=1, then email yourself a list of IDs. Schedule monthly.
First of the month, you get an email: "11 draft posts flagged for cleanup." One click in the admin list lets you review and delete them. The clutter stops accumulating.