Comment obtenir des publications par plusieurs identifiants de publication?

21

J'ai une chaîne avec ID de poste: 43,23,65.
J'espérais pouvoir utiliser get_posts()et utiliser la chaîne avec les ID comme argument.

Mais je ne trouve aucune fonction pour récupérer plusieurs messages par ID.

Dois-je vraiment faire un WP_query?

J'ai également vu quelqu'un mentionner l'utilisation tag_in- mais je ne trouve aucune documentation à ce sujet.

Steven
la source
avez-vous essayé d'utiliser l'argument «include» de get_posts() codex.wordpress.org/Template_Tags/get_posts ?
Michael

Réponses:

37

Vous pouvez utiliser get_posts()car il prend les mêmes arguments que WP_Query.

Pour lui transmettre les identifiants, utilisez 'post__in' => array(43,23,65)(ne prend que des tableaux).

Quelque chose comme:

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

$posts = get_posts($args);

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

Je mettrais aussi le post_typeet posts_per_pagejuste pour faire bonne mesure.

CookiesForDevo
la source
Ça ne marche pas.
Dissident Rage
Non? Le passez-vous en tant que tableau? Vous utilisez deux traits de soulignement (post__in vs post_in)? Vous passez un post_type?
CookiesForDevo
1
Si vous obtenez un type de publication personnalisé, utilisez l' post_typeargument et si vous voulez plus de 5 résultats, ajoutez l' 'nopaging' => trueoption. Si vous avez une chaîne séparée par des virgules au lieu d'un tableau, utilisez explode(',',$input);pour convertir en tableau.
ejazz
1
Si vous souhaitez conserver l'ordre des messages tels qu'ils sont passés par le array, assurez-vous de les ajouter 'order_by' => 'post__in'à votre $args.
rob_st
méfiez-vous en utilisant le post_typeparamètre. Dans ce cas post, la fonction renverra TOUS les types de contenu, y compris les vôtres personnalisés, pas seulement post.
Fusion
3

Si vous ne pouvez pas faire fonctionner ce qui précède, assurez-vous d'ajouter post_type:

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

$posts = get_posts($args);
virtualLast
la source