Reputation: 389
I'm using query_posts
to get a list of most popular posts. I'm using several custom post types, and instead of including all of them in the query, I would like a query that just gets all of them, also if I create more.
This is what I have:
query_posts(array(
'meta_key' => 'post_views_count',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'post_type' => array('posttype1', 'postype2', 'posttype3')
)
);
If I don't include the post_type
, it only gets the standard post type, post
. Does anyone have an idea?
Upvotes: 18
Views: 33278
Reputation: 11939
If you want to use get_posts()
, the only work around is to use 'post_type' => get_post_types()
Example that returns ALL posts of ANY post type:
$posts = get_posts([
'post_type' => get_post_types(),
'post_status' => 'publish',
'numberposts' => -1,
]);
Upvotes: 0
Reputation: 91
'post_type' => 'any',
This gets all posts except revisions. https://developer.wordpress.org/reference/classes/wp_query/#post-type-parameters
So your query would be:
query_posts(array(
'post_type' => 'any',
'meta_key' => 'post_views_count',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'post_type' => array('posttype1', 'postype2', 'posttype3')
)
);
Upvotes: 2
Reputation: 1740
You can use 'post_type' => 'any'
for fetching from all post types. See this documentation. http://codex.wordpress.org/Class_Reference/WP_Query#Type_Parameters
Note: It is highly recommended to use WP_Query
rather than query_posts
. https://wordpress.stackexchange.com/a/1755/27998
Upvotes: 27