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.


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.


Ç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);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.