¿Cómo obtengo publicaciones por múltiples ID de publicaciones?

21

Tengo una cadena con el ID del mensaje: 43,23,65.
Esperaba poder usar get_posts()y usar la cadena con ID como argumento.

Pero no puedo encontrar ninguna función para recuperar múltiples publicaciones por ID.

¿Realmente tengo que hacer un WP_query?

También he visto a alguien mencionar el uso tag_in, pero no puedo encontrar ninguna documentación al respecto.

Steven
fuente
¿Has intentado utilizar el argumento 'incluir' de get_posts() codex.wordpress.org/Template_Tags/get_posts ?
Michael

Respuestas:

37

Puede usarlo get_posts()ya que toma los mismos argumentos que WP_Query.

Para pasarle las ID, use 'post__in' => array(43,23,65)(solo toma matrices).

Algo como:

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

$posts = get_posts($args);

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

También establecería el post_typey posts_per_pagesolo por si acaso.

CookiesForDevo
fuente
Esto no funciona
Disident Rage
¿No? ¿Lo estás pasando como una matriz? ¿Usa dos guiones bajos (post__in vs post_in)? ¿Pasando un post_type?
CookiesForDevo
1
Si obtiene un tipo de publicación personalizado, use el post_typeargumento y si desea obtener más de 5 resultados, agregue la 'nopaging' => trueopción. Si tiene una cadena separada por comas en lugar de una matriz, utilice explode(',',$input);para convertir a matriz.
ejazz
1
Si desea mantener el orden de las publicaciones de la forma en que pasan array, asegúrese de agregarlas 'order_by' => 'post__in'a su $args.
rob_st
Cuidado con el post_typeparámetro. En caso de post, la función devolverá TODOS los tipos de contenido, incluidos los personalizados, no solo post.
Fusion
3

Si no puede hacer que funcione lo anterior, asegúrese de agregar post_type:

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

$posts = get_posts($args);
virtualLast
fuente