Получить имя категории из пользовательского цикла и вывести его один раз

11 дек. 2014 г., 13:50:22
Просмотры: 22K
Голосов: 1

У меня есть главная страница журнала, которая обновляется с каждым выпуском, и на главной странице отображаются прикрепленные записи текущего выпуска. Например, в этом месяце все записи находятся в категории '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, но не могу заставить это работать только один раз. Буду благодарен за любую помощь!

0
Все ответы на вопрос 2
2

Вот идея. Обратите внимание, это будет работать только если все записи принадлежат нужной категории и если у каждой записи есть только одна категория.

Записи возвращаются в массиве, к которому можно обратиться через:

$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;
11 дек. 2014 г. 14:36:58
Комментарии

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

antonanton antonanton
11 дек. 2014 г. 14:51:47

Да, именно. Логика здесь, как уже говорилось, в том, что все посты относятся к одной категории. Должно показывать Issue 3 для следующего выпуска, если текущий выпуск — номер 2 :-)

Pieter Goosen Pieter Goosen
11 дек. 2014 г. 14:54:04
0
    <?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] - получает первый результат из массива, который является объектом

8 окт. 2018 г. 15:02:44