Como obtenho postagens por vários IDs de postagem?

21

Eu tenho uma string com pós ID de: 43,23,65.
Eu esperava poder usar get_posts()e usar a string com IDs como argumento.

Mas não consigo encontrar nenhuma função para recuperar várias postagens por ID.

Eu realmente tenho que fazer um WP_query?

Também vi alguém mencionar o uso tag_in- mas não consigo encontrar nenhuma documentação sobre isso.

Steven
fonte
você tentou usar o argumento 'include' do get_posts() codex.wordpress.org/Template_Tags/get_posts ?
31411 Michael

Respostas:

37

Você pode usar get_posts()os seguintes argumentos WP_Query.

Para passar os IDs, use 'post__in' => array(43,23,65)(apenas matrizes).

Algo como:

$args = array(
    'post__in' => array(43,23,65)
);

$posts = get_posts($args);

foreach ($posts as $p) :
    //post!
endforeach;

Eu também definiria o post_typee posts_per_pageapenas por uma boa medida.

CookiesForDevo
fonte
Isso não funciona.
Dissident Rage
Não? Você está passando isso como uma matriz? Usando dois sublinhados (post__in vs post_in)? Passando um post_type?
CookiesForDevo
1
Se você estiver recebendo um tipo de postagem personalizado, use o post_typeargumento e, se desejar mais de 5 resultados, adicione a 'nopaging' => trueopção Se você tiver uma sequência separada por vírgula em vez de uma matriz, use explode(',',$input);para converter em matriz.
ejazz
1
Se você quiser manter a ordem das postagens do jeito que elas passam array, não se esqueça de adicioná 'order_by' => 'post__in'- las à sua $args.
rob_st
cuidado com o post_typeparâmetro. No caso de post, a função retornará TODOS os tipos de conteúdo, incluindo os personalizados, não apenas post.
Fusion
3

Se você não conseguir que o acima funcione, adicione post_type:

$args = array(
    'post_type' => 'pt_case_study',
    'post__in' => array(2417, 2112, 784)
);

$posts = get_posts($args);
virtualLast
fonte