Как получить записи по нескольким ID постов?

31 дек. 2011 г., 13:44:59
Просмотры: 88.1K
Голосов: 31

У меня есть строка с ID записей: 43,23,65.
Я надеялся, что смогу использовать get_posts() и передать строку с ID в качестве аргумента.

Но я не могу найти функции для получения нескольких записей по ID.

Неужели мне действительно нужно использовать WP_query?

Я также видел, что кто-то упоминал использование tag_in - но я не могу найти документацию по этому.

1
Комментарии

пробовали ли вы использовать аргумент 'include' в get_posts() http://codex.wordpress.org/Template_Tags/get_posts ?

Michael Michael
31 дек. 2011 г. 13:56:39
Все ответы на вопрос 3
6
56

Вы можете использовать get_posts(), так как она принимает те же аргументы, что и WP_Query.

Для передачи ID используйте 'post__in' => array(43,23,65) (принимает только массивы).

Например, так:

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

$posts = get_posts($args);

foreach ($posts as $p) :
    //пост!
endforeach;

Я бы также рекомендовал установить параметры post_type и posts_per_page для надежности.

31 дек. 2011 г. 13:56:08
Комментарии

Это не работает.

Dissident Rage Dissident Rage
5 авг. 2015 г. 22:22:02

Нет? Вы передаёте его как массив? Используете два подчёркивания (post__in вместо post_in)? Указываете post_type?

CookiesForDevo CookiesForDevo
6 авг. 2015 г. 04:10:39

Если вы получаете пользовательский тип записи, используйте аргумент post_type, а если вам нужно больше 5 результатов, добавьте опцию 'nopaging' => true.

Если у вас строка, разделённая запятыми, а не массив, используйте explode(',',$input); для преобразования в массив.

ejazz ejazz
19 янв. 2017 г. 15:48:37

Если вы хотите сохранить порядок записей таким, каким он передан в array, убедитесь, что добавили 'order_by' => 'post__in' в ваш $args.

rob_st rob_st
12 окт. 2017 г. 13:17:08

Будьте осторожны с параметром post_type. В случае значения post функция вернет ВСЕ типы контента, включая ваши пользовательские, а не только записи типа post.

Fusion Fusion
23 апр. 2019 г. 14:49:30

Просто убедитесь, что проверяете статус ID записей. Он должен быть 'publish'.

Sarasranglt Sarasranglt
27 мар. 2020 г. 10:49:32
Показать остальные 1 комментариев
0

Если приведённый выше код не работает, убедитесь, что вы добавили параметр post_type:

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

$posts = get_posts($args);
21 авг. 2015 г. 18:10:34
0

Если вам нужно получить записи по их ID (независимо от типа записи), используйте следующий код:

$args = [
    'post_type' => get_post_types(),
    'post__in' => [ 43, 23, 65 ]
];

$posts = get_posts($args);

Или даже короче:

$args = [
    'post_type' => 'any',
    'post__in' => [ 43, 23, 65 ]
];

$posts = get_posts($args);
8 мая 2021 г. 18:33:41