Як отримати повідомлення за кількома ідентифікаторами публікацій?


21

У мене є рядок з постом ідентифікаторів: 43,23,65.
Я сподівався, що я можу використовувати get_posts()і використовувати рядок з ідентифікаторами як аргумент.

Але я не можу знайти жодних функцій для отримання кількох дописів за ідентифікатором.

Чи мені справді треба робити WP_query?

Я також бачив, як хтось згадував про використання tag_in- але я не можу знайти жодної документації щодо цього.


ви намагалися використовувати аргумент "включати" get_posts() коду codex.wordpress.org/Template_Tags/get_posts ?
Майкл

Відповіді:


37

Ви можете використовувати, get_posts()оскільки він бере ті ж аргументи, що і WP_Query.

Щоб передати йому ідентифікатори, використовуйте 'post__in' => array(43,23,65)(бере лише масиви).

Щось на зразок:

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

$posts = get_posts($args);

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

Я також встановив би post_typeі posts_per_pageпросто на добру міру.


Це не працює.
Дисидентська гнів

Ні? Ви передаєте це як масив? Використовуючи дві підкреслення (post__in vs post_in)? Передається пост_тип?
CookiesForDevo

1
Якщо ви отримуєте спеціальний тип публікації, використовуйте post_typeаргумент, а якщо вам потрібно більше 5 результатів, додайте 'nopaging' => trueпараметр. Якщо ви маєте відокремлений комою рядок замість масиву, використовуйте explode(',',$input);для перетворення в масив.
ejazz

1
Якщо ви хочете зберегти порядок публікацій так, як їх передають array, обов’язково додайте 'order_by' => 'post__in'до своїх $args.
rob_st

остерігайтеся використання post_typeпараметра. У разі post, функція поверне ВСІ типи вмісту, включаючи власні, не тільки post.
Fusion

3

Якщо ви не можете змусити описане вище, переконайтеся, що ви додали post_type:

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

$posts = get_posts($args);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.