Как получить название категории в пользовательском цикле WordPress?

30 мар. 2011 г., 20:43:58
Просмотры: 17K
Голосов: 1

Я использую следующий код для отображения списка записей в категории, но хочу вывести заголовок категории в отдельном теге h2 над списком.

<ul class="subcats-list">
<?php
$weightloss = new WP_Query();
$weightloss->query('showposts=5&include=4');

while ($weightloss->have_posts()) : $weightloss->the_post(); ?>
    <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
<?php endwhile; ?>

</ul><!-- subcat -->

РЕДАКТИРОВАНО:

Я попробовал использовать single_cat_title, однако заголовок отображается для родительской категории во всех блоках подкатегорий. Вот пример блока, который я повторяю несколько раз, где запрос получает записи из разных подкатегорий. Мне нужно выводить заголовок каждой подкатегории над её записями. Я понимаю, что это не работает, потому что функция возвращает родительскую категорию, но не могу разобраться с PHP...

        <ul class="subcats-list">
            <h2 class="subcats-title"><?php single_cat_title(); ?></h2>
                <?php
                $weightloss = new WP_Query();
                $weightloss->query('showposts=5&cat=4');

                while ($weightloss->have_posts()) : $weightloss->the_post(); ?>
                  <li><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></li>
                <?php endwhile; ?>

        </ul><!-- subcat -->
2
Комментарии

это не имеет смысла, потому что в цикле выше вы выбираете записи из всех категорий. И что за include? Это допустимый аргумент?

onetrickpony onetrickpony
30 мар. 2011 г. 21:04:23

ты абсолютно прав. Я тут накосячил. Я имел в виду использовать cat=4, а не include. Я использую этот фрагмент несколько раз на одной странице. Поэтому я хотел отображать категорию над списком.

chris_s chris_s
31 мар. 2011 г. 02:19:45
Все ответы на вопрос 2
1

Поскольку у вас уже есть ID категории (вы используете его в вызове WP_Query::query()), вы можете просто использовать его для получения названия категории. Функция get_cat_name( $cat_id ) сделает именно это. Внутри она использует get_category( $cat_id ), которая возвращает полный объект категории - это может быть полезно, если вы хотите отобразить больше информации о категории.

5 апр. 2011 г. 16:24:57
Комментарии

это именно то, что я искал. Спасибо, Ян.

chris_s chris_s
6 апр. 2011 г. 17:55:22
2

Не совсем понятно, что именно вы имеете в виду. Вы спрашивали, как получить название категории внутри пользовательского цикла. Вы имеете в виду конкретную категорию или категорию, связанную с определенной записью внутри этого цикла?

В любом случае, если вам нужно вывести название первой категории для каждой записи в вашем пользовательском цикле, просто добавьте следующий код где-нибудь внутри вашего цикла:

<?php single_cat_title(); ?>

Документацию по этой функции можно найти здесь:
http://codex.wordpress.org/Function_Reference/single_cat_title

Обратите внимание на комментарий под вашим вопросом — это важное замечание. Что вы хотели сделать с параметром include? Вы пытаетесь отфильтровать этот запрос для определенного набора записей?

Допустимые параметры запроса можно найти на странице документации для WP_query. Если вы не уверены, как установить параметры, просто дайте нам знать. ;)

30 мар. 2011 г. 22:55:46
Комментарии

Попробую это. Он был прав насчет include. Это была моя ошибка.

chris_s chris_s
31 мар. 2011 г. 02:20:47

Я попробовал, но заголовок родительской категории отображается для всех блоков подкатегорий. Вот пример двух блоков, где запрос выводит записи из двух разных подкатегорий. Мне нужно, чтобы заголовок каждой подкатегории отображался над соответствующими записями.

chris_s chris_s
31 мар. 2011 г. 18:24:42