Wie erhalte ich Posts von mehreren Post-IDs?

21

Ich habe eine Zeichenfolge mit Post - IDs bekommt: 43,23,65.
Ich hatte gehofft, ich könnte get_posts()die Zeichenfolge mit IDs als Argument verwenden und verwenden.

Ich kann jedoch keine Funktionen zum Abrufen mehrerer Beiträge nach ID finden.

Muss ich wirklich eine machen WP_query?

Ich habe auch jemanden erwähnen sehen, der verwendet tag_in- aber ich kann keine Dokumentation dazu finden.

Steven
quelle
Haben Sie versucht, das Argument 'include' von get_posts() codex.wordpress.org/Template_Tags/get_posts zu verwenden ?
Michael

Antworten:

37

Sie können get_posts()die gleichen Argumente verwenden wie WP_Query.

Um die IDs zu übergeben, verwenden Sie 'post__in' => array(43,23,65)(nimmt nur Arrays).

So etwas wie:

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

$posts = get_posts($args);

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

Ich würde auch das post_typeund posts_per_pagenur für ein gutes Maß setzen.

CookiesForDevo
quelle
Das geht nicht.
Dissident Rage
Nein? Übergeben Sie es als Array? Verwenden Sie zwei Unterstriche (post__in vs post_in)? Post_type übergeben?
CookiesForDevo
1
Wenn Sie einen benutzerdefinierten Beitragstyp erhalten, verwenden Sie das post_typeArgument. Wenn Sie mehr als 5 Ergebnisse wünschen, fügen Sie die 'nopaging' => trueOption hinzu. Wenn Sie anstelle eines Arrays eine durch Kommas getrennte Zeichenfolge verwenden explode(',',$input);, konvertieren Sie sie in ein Array.
Ejazz
1
Wenn Sie möchten, dass die Reihenfolge der Posts so bleibt, wie sie von der übergeben werden array, müssen Sie sie 'order_by' => 'post__in'zu Ihrer hinzufügen $args.
rob_st
Vorsicht mit post_typeParameter. Im Fall von postgibt function ALLE Inhaltstypen zurück, einschließlich Ihrer benutzerdefinierten, nicht nur post.
Fusion
3

Wenn Sie das Obige nicht zum Laufen bringen können, stellen Sie sicher, dass Sie Folgendes hinzufügen post_type:

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

$posts = get_posts($args);
virtualLast
quelle