Вывод названия категории в шаблоне page.php

395
08 марта 2017, 20:51

Есть custom post type и custom taxonomy. Есть страница page.php и на ней выводятся посты из этой таксономии.

query_posts(
  array(
    'post_type'      => 'success-stories',
    'paged'          => $paged,
    'posts_per_page' => -1,
   )
);

Дальше через цикл выводятся превью постов. И вот тут бы хотелось вставить название категории к каждому посту. Через single_cat_title() не выводится ничего. Знает ли кто-то как это правильно сделать именно в шаблоне page.php?

Answer 1

single_cat_title() можно использовать только за пределами Цикла WordPress.

Для получения в цикле WordPress массива категорий, относящихся к текущему посту, надо использовать get_the_category().

Для получения в цикле WordPress массива терминов таксономии, относящихся к текущему посту, надо использовать get_the_terms( $post->ID, $taxonomy ).

Answer 2

Прежде всего, надо исправить запрос на корректный (не через query_posts):

$args = array( 'posts_per_page' => -1,
   'paged' => $paged,
   'post_type' => 'success-stories'
);
$query = new WP_Query( $args );
while ( $query->have_posts() ) {
  $query->the_post();        
  the_title(); // выведем заголовок поста
}
wp_reset_postdata();

Для вывода кастомных таксономий служит функция single_term_title(). https://wp-kama.ru/function/single_term_title

READ ALSO
Symfony 1.4 sfDoctrinePager : Как задать custom SQL?

Symfony 1.4 sfDoctrinePager : Как задать custom SQL?

Есть старый проект написанный на symfony 14

351
Синхронизация с сервером в PhpStorm

Синхронизация с сервером в PhpStorm

Соединяюсь c сервером по SFTP в PhpStormОтправка файлов происходит автоматически при сохранении

352
Отправить письмо без указания хедера From

Отправить письмо без указания хедера From

При использовании php функции mail() не обязательно указывать хедер From, он и так автоматом подставляется, а вот если отправлять через phpmailer, то без...

305
Безопасность AJAX?

Безопасность AJAX?

Можно мне разъяснить про безопасность AJAX запросовЕсли у меня работает такой код:

443