Вопрос или проблема
Как мне использовать get_posts для фильтрации по одному id записи? (Я не хочу использовать get_post, потому что использую это в другой функции, которая может принимать другие параметры и должна возвращать массив). Следующие методы не работают:
get_posts(array(
'ID' => 12345,
));
get_posts(array(
'p' => 12345,
));
get_posts(array(
'post' => 12345,
));
get_posts(array(
'post__in' => array(12345),
));
Неважно, все эти методы работают, если я добавлю параметр post_type в запрос:
get_posts(array(
'ID' => 12345,
'post_type' => array('any'),
));
get_posts(array(
'p' => 12345,
'post_type' => array('any'),
));
get_posts(array(
'post' => 12345,
'post_type' => array('any'),
));
get_posts(array(
'post__in' => array(12345),
'post_type' => array('any'),
));
Это действительно глупое дизайнерское решение; любой тип записи должен подразумеваться, если параметр опущен.
Ответ или решение
Чтобы использовать функцию get_posts
для фильтрации по конкретному идентификатору поста, важно учитывать, что для корректной работы необходимо указать параметр post_type
. Это может показаться неудобным, но, к сожалению, такое требование обусловлено дизайном WordPress. Вот как можно корректно использовать get_posts
с фильтрацией по ID поста:
- Фильтрация по ID с использованием параметров: Чтобы получить пост по его ID, вы можете использовать любой из следующих методов, добавляя параметр
post_type
для уточнения типа поста. Например, если вы хотите получить пост с ID 12345:
$posts = get_posts(array(
'ID' => 12345,
'post_type' => array('any'), // Замените 'any' на нужный вам тип поста, если это необходимо
));
Или используя другие способы, записанные ниже:
$posts = get_posts(array(
'p' => 12345,
'post_type' => array('any'),
));
$posts = get_posts(array(
'post' => 12345,
'post_type' => array('any'),
));
$posts = get_posts(array(
'post__in' => array(12345),
'post_type' => array('any'),
));
-
Уточнение типа поста: Вместо использования
'any'
, вы можете заменить его на конкретный тип поста, например,'post'
,'page'
или любой другой пользовательский тип поста, который вы используете в своем проекте. -
Исключение ошибок: Если вы не укажете
post_type
, запрос может не вернуть ожидаемый результат. Это может вызвать путаницу, особенно если идентификатор поста верный, но он не соответствует типу поста, который запрашивается.
Таким образом, чтобы успешно использовать get_posts
для получения данных по определенному посту, всегда включайте параметр post_type
, чтобы избежать неожиданных результатов. Это не только помогает избежать ошибок, но и облегчает дальнейшую работу с полученными данными.