¿Cómo obtengo entradas por múltiples IDs de entrada?
Tengo una cadena con IDs de entradas: 43,23,65.
Esperaba poder usar get_posts() y utilizar la cadena con IDs como argumento.
Pero no puedo encontrar ninguna función para recuperar múltiples entradas por ID.
¿Realmente tengo que usar WP_Query?
También he visto que alguien mencionó usar tag_in - pero no puedo encontrar documentación sobre esto.
Puedes utilizar get_posts() ya que acepta los mismos argumentos que WP_Query.
Para pasarle los IDs, usa 'post__in' => array(43,23,65) (solo acepta arrays).
Algo como:
$args = array(
'post__in' => array(43,23,65)
);
$posts = get_posts($args);
foreach ($posts as $p) :
// ¡post!
endforeach;
También recomendaría establecer post_type y posts_per_page por precaución.
¿No? ¿Lo estás pasando como un array? ¿Usando dos guiones bajos (post__in vs post_in)? ¿Pasando un post_type?
CookiesForDevo
Si estás obteniendo un custom post type, usa el argumento post_type, y si quieres más de 5 resultados, añade la opción 'nopaging' => true.
Si tienes un string separado por comas en lugar de un array, usa explode(',',$input); para convertirlo a array.
ejazz
Si deseas mantener el orden de las publicaciones tal como se pasan en el array, asegúrate de agregar 'order_by' => 'post__in' a tus $args.
rob_st
Ten cuidado al usar el parámetro post_type. En el caso de post, la función devolverá TODOS los tipos de contenido, incluyendo tus tipos personalizados, no solo post.
Fusion
Si quieres obtener todas las publicaciones por sus IDs (sin importar el tipo de publicación) usa esto:
$args = [
'post_type' => get_post_types(),
'post__in' => [ 43, 23, 65 ]
];
$posts = get_posts($args);
O incluso más corto:
$args = [
'post_type' => 'any',
'post__in' => [ 43, 23, 65 ]
];
$posts = get_posts($args);