Jak uzyskać posty według wielu identyfikatorów postów?

21

Mam ciąg znaków z postu identyfikatora: 43,23,65.
Miałem nadzieję, że będę mógł użyć get_posts()i użyć ciągu z identyfikatorami jako argumentu.

Ale nie mogę znaleźć żadnych funkcji do wyszukiwania wielu postów według identyfikatora.

Czy naprawdę muszę to zrobić WP_query?

Widziałem też, że ktoś wspomniał o używaniu tag_in- ale nie mogę znaleźć żadnej dokumentacji na ten temat.

Steven
źródło
próbowałeś użyć argumentu „include” z get_posts() codex.wordpress.org/Template_Tags/get_posts ?
Michael

Odpowiedzi:

37

Możesz użyć, get_posts()ponieważ wymaga tych samych argumentów, co WP_Query.

Aby przekazać mu identyfikatory, użyj 'post__in' => array(43,23,65)(bierze tylko tablice).

Coś jak:

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

$posts = get_posts($args);

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

Ustawiłbym również post_typei na posts_per_pagewszelki wypadek.

CookiesForDevo
źródło
To nie działa
Dissident Rage
Nie? Czy przekazujesz go jako tablicę? Używasz dwóch znaków podkreślenia (post__in vs. post_in)? Przekazywanie typu post_?
CookiesForDevo
1
Jeśli otrzymujesz niestandardowy typ postu, użyj post_typeargumentu, a jeśli chcesz uzyskać więcej niż 5 wyników, dodaj 'nopaging' => trueopcję. Jeśli zamiast tablicy rozdzielony jest przecinkami, użyj przycisku, explode(',',$input);aby przekonwertować na tablicę.
ejazz
1
Jeśli chcesz zachować kolejność postów w sposób, w jaki są one przekazywane przez array, pamiętaj, aby dodać 'order_by' => 'post__in'do swojego $args.
rob_st
uważaj używając post_typeparametru. W przypadku postfunkcja zwróci WSZYSTKIE typy treści, w tym niestandardowe, nie tylko post.
Fusion
3

Jeśli nie możesz sprawić, aby powyższe działało, upewnij się, że dodajesz post_type:

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

$posts = get_posts($args);
virtualLast
źródło