Wordpress - How to Get All Posts with any post status?
You can use the post_status parameter:
* 'publish' - a published post or page
* 'pending' - post is pending review
* 'draft' - a post in draft status
* 'auto-draft' - a newly created post, with no content
* 'future' - a post to publish in the future
* 'private' - not visible to users who are not logged in
* 'inherit' - a revision. see get_children.
* 'trash' - post is in trashbin. added with Version 2.9.
I'm not sure that it accepts 'any' so use an array with all of the statuses you want:
$args = array(
'post_type' => 'my-post-type',
'post_author' => $current_user->ID,
'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash')
);
$query = new WP_Query($args);
while ( $query->have_posts() ) : $query->the_post();
There is simple way, how to get all posts with any status:
$articles = get_posts(
array(
'numberposts' => -1,
'post_status' => 'any',
'post_type' => get_post_types('', 'names'),
)
);
Now you can iterate throughout all posts:
foreach ($articles as $article) {
echo $article->ID . PHP_EOL; //...
}
The WP_Query
class method ->query()
accepts an any
argument for post_status
. See wp_get_associated_nav_menu_items()
for a proof.
The same goes for get_posts()
(which is just a wrapper for above call).