Если вы хотите отобразить рубрики (категории) и теги поста в шаблоне single.php
— т.е. шаблоне одиночной статьи, WordPress предоставляет удобные функции из API-шаблонов. В этой статье разберем, как их использовать правильно и оформить вывод.
Зачем это нужно?
Вывод рубрик и тегов в конце поста помогает:
- улучшить навигацию по сайту;
- увеличить вовлеченность пользователей (они переходят на страницы меток);
- улучшить внутреннюю перелинковку и SEO.
В чём разница между рубриками и тегами?
WordPress использует две встроенные таксономии для организации записей:
Категории (Categories)
- Имеют иерархическую структуру — можно создавать подкатегории (например: «Новости» → «Обновления»).
- Обычно используются для группировки постов по основным темам.
- Каждый пост может быть привязан к одной или нескольким категориям, но чаще — к одной основной.
- Часто выводятся в меню сайта или фильтрах по темам.
Теги (Tags)
- Плоская структура — нет вложенности, все теги равноправны.
- Используются для уточнения содержания поста или выделения ключевых слов.
- Один пост может иметь много тегов, и они не обязаны повторяться на других постах.
- Удобны для быстрого поиска по связанной теме, особенно при большом количестве записей.
Например, пост с обзором смартфона может быть в категории Обзоры
, а теги могут быть: Android
, Samsung
, камера
, 5G
.
Таким образом:
- Категория — «о чём пост»;
- Теги — «какие аспекты он затрагивает».
Разобравшись с чем мы имеем дело, давайте перейдем к сути вопроса — как вывести рубрики/теги в конце статьи.
Вывод тегов: the_tags()
Функция the_tags()
выводит список тегов, прикрепленных к текущему посту. Она принимает три параметра:
1 |
the_tags( $before, $sep, $after ); |
$before
— HTML-код перед списком (например, открытие тега<p class="tags">
);$sep
— разделитель между тегами (например, пробел или запятая);$after
— HTML-код после списка (например, закрытие тега</p>
).
Пример:
1 2 3 |
<?php the_tags( '<p class="tags">Теги: ', ', ', '</p>' ); ?> |
Если у поста нет тегов, функция не выведет ничего.
Вывод рубрик: the_category()
Функция the_category()
выводит список рубрик (категорий), к которым привязан пост. Это удобный способ отобразить таксономию category
прямо в шаблоне.
Сигнатура функции:
1 2 3 4 5 |
the_category( string $separator = '', string $parents = '', int|false $post_id = false ) |
Параметры:
$separator
— (строка)
Разделитель между рубриками.
По умолчанию — пустая строка, и тогда список выводится в виде<ul><li>
(HTML-список). Если указать, например,', '
, то рубрики будут выведены как текст с разделением запятой.$parents
— (строка)
Способ отображения иерархии родительских категорий.
Принимает:'multiple'
— каждая рубрика показывается с полным путём (Новости > Технологии
);'single'
— только одна родительская ветка указывается для каждой категории;''
(пусто) — выводятся только сами рубрики без родительских.
$post_id
— (int|false)
ID поста, для которого нужно получить категории.
По умолчанию — текущий пост в цикле WordPress. Указывается явно, если нужен вывод для другого поста.
Пример использования:
1 2 3 4 5 |
<?php echo '<p class="categories">Рубрики: '; the_category( ', ', 'multiple' ); echo '</p>'; ?> |
Этот код:
- выведет рубрики через запятую;
- покажет полные иерархические пути (
Книги > Фантастика
); - будет применён к текущему посту (
$post_id
по умолчанию).
Если рубрик у поста нет — функция ничего не выведет.
Объединим теги/рубрики в один список
Иногда нужно объединить рубрики и теги в один блок — например, чтобы задать общую стилизацию или разместить их рядом. Ниже пример, где и рубрики, и теги выводятся внутри одного контейнера <p class="post-taxonomies">
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php // разделитель тегов - пусть будет запятая: $delimiter = ', '; // рубрики / теги в виде наборов ссылок $cats = get_the_category_list( $delimiter ); $tags = get_the_tag_list( '', $delimiter ); echo '<p class="post-taxonomies">' . $cats . ($cats && $tags ? $delimiter : '') . $tags . '</p>'; ?> |
Что здесь происходит:
- Вместо
the_category()
иthe_tags()
мы используем функцииget_the_category_list()
иget_the_tag_list()
, чтобы получить строки, а не сразу вывести их; - Это позволяет объединить вывод в один контейнер, добавить, например,
<br>
, между рубриками и тегами, если нужно разделить их логически; - У родительских рубрик иерархия не показывается, так как второй параметр у
get_the_category_list()
не передан (''
по умолчанию).
Результат на HTML-выходе (пример):
1 2 3 4 |
<p class="post-taxonomies"> WordPress, PHP, шаблоны, таксономия, the_category </p> |
Такой подход удобен, если вы хотите гибко управлять разметкой, выводить рубрики и теги вместе, или, например, вставить между ними иконки.