Finding specific posts in WordPress is slow
You want every published post missing a featured image so you can fix how they look when shared. 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, "every month, flag published posts not updated in two years for a content refresh", 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, published state, category, tag, author, featured image presence, content length, last updated date. Each match comes with full post details and feeds into a macro's for_each loop.
Shown in advanced mode, where commands start with tp. In easy mode you type the same command without the tp prefix.
Combine with update-post-meta for bulk changes. Filter posts matching a pattern, then for_each apply the same meta update. "Tag every post not updated in two years 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. Choose a whole-number limit from 1 to 1,000. Unlimited queries are not supported.
| Parameter | Value |
|---|---|
-type | Content post type you have permission to edit (default post). Internal and unsupported types are rejected. |
-published | Only return published posts |
-category / -tag | Filter by category slug (e.g. blog, news) Filter by tag slug (e.g. update, featured) |
-author | Filter by author username or slug |
-no-image / -no-content | Only return posts without a featured image Only return posts with empty content |
-words-below | Fewer words than this whole number (1–1000000); 0 disables this filter. |
-updated-before | Last modified on or before this calendar date (YYYY-MM-DD), in the site timezone. |
| Can be used in |
Real example
You have 300 published posts, and dozens are missing a featured image, so they look broken when shared on social. Every quarter you mean to fix them. You never do.
You build a macro: tp filter post -no-image → for_each: update_post_meta with needs_image=1, then email yourself the list of IDs. Schedule monthly.
First of the month, you get an email: "18 posts flagged, missing a featured image." You add images in your next content session. Your shares stop looking broken.
Goes further with TrueCommander
Frequently asked questions
tp filter post queries precisely, for example tp filter post -category=blog -author=admin, and returns the matching posts with their details.-words-below=300 to list posts under 300 words, -no-content for empty ones, and -no-image for posts missing a featured image, the shortlist for "expand, merge, or delete."-updated-before=2024-01-01 to surface posts nobody has touched since a given date, the refresh-or-retire pile. See the full content audit workflow.-type to target a post type, and combine it with status filters like -published to scope the results.-limit to change that, or a bounded -limit from 1 to 1000.