¿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?

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.

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
.

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
.

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);
