Получение ID записей произвольного типа
Я создал произвольный тип записи 'case studies' с несколькими записями.
Я хочу получить ID каждой из этих записей для манипуляции данными, но несмотря на просмотр похожих тем, я не могу понять, как это сделать. Что-то вроде:
для каждой записи произвольного типа получить id
Я создаю функцию для отображения этой информации в административной панели, вот фрагмент кода ниже.
function display_meta_box( $case_study )
{
if (in_array('case_studies', get_post_types()))
{
// ...получить ID всех записей типа 'case_studies'...
}
// ...выполнить другие действия с ID...
}
Вы можете получить простой массив ID записей произвольного типа (CPT), используя функцию get_posts с параметром fields.
$all_post_ids = get_posts(array(
'fields' => 'ids', // Получаем только ID записей
'posts_per_page' => -1, // Все записи без ограничения
'post_type' => 'case_studies' // Тип записей "Кейсы"
));
Вам не нужен echo с the_title(), также вы можете использовать the_ID() вместо echo get_the_id().
birgire
Обратите внимание на разницу между функциями the_* и get_the_*. В большинстве случаев это как разница между echo и return.
birgire
Интересно, что в моем случае мне потребовалось использовать get_the_* для манипуляции информацией внутри цикла while.
myol
установите параметр fields в значение ids в вашем запросе, и вы получите просто массив ID, что значительно снизит использование памяти. Также вам, вероятно, стоит установить posts_per_page в -1, чтобы получить все записи.
Milo
@Milo Спасибо, но в данном случае мне действительно нужны заголовки каждого возвращаемого кастомного поста. Если бы я возвращал ID и затем использовал get_the_title(id), была бы производительность лучше, чем в текущей реализации?
myol