Получить имя категории из пользовательского цикла и вывести его один раз
У меня есть главная страница журнала, которая обновляется с каждым выпуском, и на главной странице отображаются прикрепленные записи текущего выпуска. Например, в этом месяце все записи находятся в категории 'Issue 01', а в следующем месяце я создам 'Issue 02', который заменит прикрепленные записи 'Issue 01' на главной странице.
Я пытаюсь показать название категории записей, которые извлекаются в запросе, но не могу сделать это вне цикла (я хочу показать его только один раз вверху, до начала цикла).
Вот мой запрос для вывода прикрепленных записей и попытка показать название категории, которая не работает для меня...
<?php // Получить статьи текущего выпуска
$currentissueposts = array(
'posts_per_page' => 6,
'post__in' => get_option( 'sticky_posts' ),
'ignore_sticky_posts' => 1
);
$currentissue = new WP_Query( $currentissueposts );
if ( $currentissue->have_posts() ) : ?>
<div class="the-header">
<h3><?php the_category(); ?></h3>
</div><!-- #the-header -->
<?php while( $currentissue->have_posts() ) : $currentissue->the_post(); ?>
<a href="<?php the_permalink() ?>" rel="bookmark">
<ol class="current-index-container">
<li class="the-title"><?php the_title(); ?></li>
<li class="the-author"><?php the_field('sub_head_1'); ?></li>
<li class="the-subtitle"><?php the_field('sub_head_2'); ?></li>
</ol></a>
<?php endwhile;
wp_reset_query();
endif; ?>
Я просмотрел документацию относительно single_post_title и get_the_category, но не могу заставить это работать только один раз. Буду благодарен за любую помощь!
Вот идея. Обратите внимание, это будет работать только если все записи принадлежат нужной категории и если у каждой записи есть только одна категория.
Записи возвращаются в массиве, к которому можно обратиться через:
$currentissue->posts
Исходя из этого, можно получить ID первой записи следующим образом:
$currentissue->posts[0]->ID
Теперь можно сохранить его в переменной:
$id = $currentissue->posts[0]->ID
Теперь можно использовать функцию get_the_category
для получения категории, к которой принадлежит эта запись. Помните, что согласно вашему вопросу, это будет категория, к которой принадлежат все записи.
Что-то вроде этого будет работать сразу после вашего цикла, внутри вашего условия if
:
$category = get_the_category( $id );
echo $category[0]->cat_name;

Спасибо, Pieter, это, кажется, работает. То есть просто вызывается категория первого поста и выводится.

<?php print get_the_category(get_the_ID())[0]->name; ?>
get_the_category() - получает массив записей с информацией о категориях. get_the_category(get_the_ID()) - получает массив, содержащий информацию о категории для конкретной записи. get_the_category(get_the_ID())[0] - получает первый результат из массива, который является объектом
