WP_Query by just the id?

The question:

In the codex for WP_Query I see you can query by page_id=7 for pages or by p=7 for posts. Is there a way to get a post of any post type by ID? Like id=7 that will get it no matter if it’s a page, post or custom post type?

I can only get WP_Query with p=7 to work if I add &post_type=customposttype. Is there a way to get it from the ID regardless of the post type?

The Solutions:

Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.

Method 1

any should retrieve any type:

$args = array(
  'p'         => 42, // ID of a page, post, or custom type
  'post_type' => 'any'
);
$my_posts = new WP_Query($args);

Note the description of any in the documentation:

‘any’ – retrieves any type except revisions and types with ‘exclude_from_search’ set to true.

For more information, have a look at the documentation of WP_Query.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Comment