How do I get posts by multiple post ID’s?

I’ve got a string with post ID’s: 43,23,65.
I was hoping I could use get_posts() and use the string with ID’s as an argument.

But I can’t find any functions for retrieving multiple posts by ID.

Read More

Do I really have to do a WP_query?

I’ve also seen someone mention using tag_in – but I can’t find any documentation on this.

Related posts

Leave a Reply

3 comments

  1. You can use get_posts() as it takes the same arguments as WP_Query.

    To pass it the IDs, use 'post__in' => array(43,23,65) (only takes arrays).

    Something like:

    $args = array(
        'post__in' => array(43,23,65)
    );
    
    $posts = get_posts($args);
    
    foreach ($posts as $p) :
        //post!
    endforeach;
    

    I’d also set the post_type and posts_per_page just for good measure.

  2. If you can’t get the above to work, make sure you add post_type:

    $args = array(
        'post_type' => 'pt_case_study',
        'post__in' => array(2417, 2112, 784)
    );
    
    $posts = get_posts($args);
    
  3. If you want to get all the posts by their IDs (regardless of post type) use this:

    $args = [
        'post_type' => get_post_types(),
        'post__in' => [ 43, 23, 65 ]
    ];
    
    $posts = get_posts($args);
    

    Or even shorter:

    $args = [
        'post_type' => 'any',
        'post__in' => [ 43, 23, 65 ]
    ];
    
    $posts = get_posts($args);