Получение ID записей произвольного типа

20 окт. 2014 г., 15:20:13
Просмотры: 49.7K
Голосов: 10

Я создал произвольный тип записи 'case studies' с несколькими записями.

Я хочу получить ID каждой из этих записей для манипуляции данными, но несмотря на просмотр похожих тем, я не могу понять, как это сделать. Что-то вроде:

для каждой записи произвольного типа получить id

Я создаю функцию для отображения этой информации в административной панели, вот фрагмент кода ниже.

function display_meta_box( $case_study ) 
{
    if (in_array('case_studies', get_post_types()))
    {
        // ...получить ID всех записей типа 'case_studies'...
    }
    // ...выполнить другие действия с ID...
}
0
Все ответы на вопрос 2
0
13

Вы можете получить простой массив ID записей произвольного типа (CPT), используя функцию get_posts с параметром fields.

$all_post_ids = get_posts(array(
    'fields'          => 'ids',       // Получаем только ID записей
    'posts_per_page'  => -1,         // Все записи без ограничения
    'post_type' => 'case_studies'    // Тип записей "Кейсы"
));
18 апр. 2018 г. 21:12:54
7
11

Нашел основу ответа в кодексе

$args = array( 'post_type' => 'case_studies');

$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
    the_ID();
endwhile;
20 окт. 2014 г. 16:47:23
Комментарии

Вам не нужен echo с the_title(), также вы можете использовать the_ID() вместо echo get_the_id().

birgire birgire
20 окт. 2014 г. 16:57:14

'basis' - просто показано в качестве примера

myol myol
20 окт. 2014 г. 16:59:25

Обратите внимание на разницу между функциями the_* и get_the_*. В большинстве случаев это как разница между echo и return.

birgire birgire
20 окт. 2014 г. 17:06:58

Интересно, что в моем случае мне потребовалось использовать get_the_* для манипуляции информацией внутри цикла while.

myol myol
20 окт. 2014 г. 17:30:23

установите параметр fields в значение ids в вашем запросе, и вы получите просто массив ID, что значительно снизит использование памяти. Также вам, вероятно, стоит установить posts_per_page в -1, чтобы получить все записи.

Milo Milo
20 окт. 2014 г. 18:39:01

@Milo Спасибо, но в данном случае мне действительно нужны заголовки каждого возвращаемого кастомного поста. Если бы я возвращал ID и затем использовал get_the_title(id), была бы производительность лучше, чем в текущей реализации?

myol myol
20 окт. 2014 г. 18:56:05

Установите параметр post_status в значение any, если хотите получать черновики или другие неопубликованные записи. Как упомянул @Milo, я также установил posts_per_page в -1, чтобы получить все записи.

David David
10 окт. 2017 г. 07:57:05
Показать остальные 2 комментариев