Переходим к вопросам кастомизации стиля рубрик WordPress. Разработчики сайтов часто встречаются с задачей необходимости стилизации отдельной рубрики, например, если у вас есть раздел блог и дополнительно нужно оформить раздел портфолио. Все это можно реализовать с помощью кастомных шаблон для категорий WordPress. Используя свои шаблоны, вы сможете изменять формат вывода карточек записей, добавлять свои произвольные поля для записей рубрик, вставлять дополнительные информационные и навигационные блоки и много чего другого.
Иерархия шаблонов для рубрик в WordPress
В CMS WordPress реализованная удобная и структурированная система работы с шаблонами для категорий. Она представляет собой иерархическую последовательность, начиная от базового шаблона вашей темы index.php и заканчивая привязкой шаблонов исходя из параметров нужной категории (id, slug). Такой принцип позволяет разработчикам очень гибко настраивать внешний вид и структуру разделов сайта.
Иерархию шаблонов для рубрик в данной CMS можно представить в следующем виде:
- category-{slug}.php
- category-{id}.php
- category.php
- archive.php
- index.php.
Суть использования того или иного шаблона для конкретной категории следующая. Сначала WordPress ищет файл category-{slug}.php если не находит, ищет category-{id}.php, если нет, то category.php, далее archive.php, если этих файлов нет, то напоследок применяет index.php, который точно создан в теме.
Все созданные шаблоны загружаются в папку с темой, которую вы используете на сайте: wp-content/themes/your-theme/.
Давайте детальнее разберем, как формировать эти виды шаблонов на практике.
1. category-{slug}.php. Slug – это ярлык (url, при использовании ЧПУ) вашей рубрики. Посмотреть значение slug, можно перейдя в раздел «Записи» — «Рубрики». Там вы увидите список рубрик, вам нужно поле «Ярлык».

Это значение вписывают в шаблон, чтобы подключить его к конкретной категории. На примере выше, чтобы подключить шаблон к категории «Название рубрики», вам нужно в папке с темой создать файл category-rubrika1.php.
Ярлык (slug) задается при создании или редактировании категорий.
2. category-{id}.php. Вторая ступень иерархии – это использования значения id необходимой вам категории в качестве привязки для шаблона. Напрямую посмотреть id рубрики вы не сможете, но можете перейти на страницу «Записи» — «Рубрики», перейти к редактированию созданной рубрики.

В строке браузера посмотреть значение id данной рубрики.

Там будет url следующего плана.
/wp-admin/term.php?taxonomy=category&tag_ID=19&post_type=post
Вас интересует число после параметра tag_ID=, в нашем случае это 19. Поэтому пример созданного и загруженного в папку темы шаблона будет category-19.php. Вы уже будете вставлять id своей категории.
3. category.php – это шаблон, который будет задействован для всех созданных категорий.
4. archive.php – применяется, если нет вышеприведенных файлов и является шаблоном для архивов, но по дефолту может быть использован и для рубрик.
Из чего состоит шаблон страницы категории в WordPress?
Файл создали, теперь нужно его наполнить, чтобы выводить записи и дополнительную информацию о разделе сайта. Большинство разработчиков делают следующим образом.
- Они копируют файл category.php или же если его нет, то archive.php темы, которая используется на сайте, например на рабочий стол.
- Переименовывают его в шаблон с привязкой к конкретной категории, например category-19.php или же category-rubrika1.php.
- Загружают его в корневую папку темы, должен получиться следующий путь: /wp-content/themes/your-theme/category-19.php.

Такой подход позволяет сохранить разметку страницы. Далее вы можете добавлять и удалять блоки, классы для стилизации и корректировать вывод записей.
Базовыми структурными элементами шаблона категории в WordPress является подключение шапки, футера и сайдбара.
<?php get_header(); ?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
Второе – это цикл вывода записей категории. Для примера возьмем стандартную тему – twentynineteen, вот как выглядит ее файл archive.php.
<?php
/**
* The template for displaying archive pages
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/
*
* @package WordPress
* @subpackage Twenty_Nineteen
* @since Twenty Nineteen 1.0
*/
get_header();
?>
<div id="primary" class="content-area">
<main id="main" class="site-main">
<?php if ( have_posts() ) : ?>
<header class="page-header">
<?php
the_archive_title( '<h1 class="page-title">', '</h1>' );
?>
</header><!-- .page-header -->
<?php
// Start the Loop.
while ( have_posts() ) :
the_post();
/*
* Include the Post-Format-specific template for the content.
* If you want to override this in a child theme, then include a file
* called content-___.php (where ___ is the Post Format name) and that
* will be used instead.
*/
get_template_part( 'template-parts/content/content', 'excerpt' );
// End the loop.
endwhile;
// Previous/next page navigation.
twentynineteen_the_posts_navigation();
// If no content, include the "No posts found" template.
else :
get_template_part( 'template-parts/content/content', 'none' );
endif;
?>
</main><!-- #main -->
</div><!-- #primary -->
<?php
get_footer();
Здесь подключается хедер и футер, а также цикл while ( have_posts() ) для вывода записей рубрики. Для вывода информации в цикле используются шаблоны, которые подтягиваются с помощью конструкции get_template_part() из папки template-parts/content/.
Условные теги для форматирования отдельных шаблонов страниц категорий
На практике разработчики иногда используют условные теги для корректировки или вывода блоков на отдельных страницах рубрик в WordPress.
Функция is_category() служит для логической проверки находиться ли пользователь на странице категории или нет, она возвращает true либо false. В качестве параметров данная функция может принимать id рубрики, название или ярлык, или ;t массив из ID, названий или ярлыков.
Пример использования.
<?php if (is_category('19')) : ?>
<p>Текст для рубрики с id = 19</p>
<?php elseif (is_category('20')) : ?>
<p>Текст для рубрики с id = 20</p>
<?php else : ?>
<?php endif; ?>
Тут идет перебор id и сравнение их значения со значением id рубрики в которой находиться пользователь.
Избегаем дублирования текста описания в категории
С помощью условного оператора, можно задать вывод описания для категории только на первой странице, а на страницах пагинации отключать этот блок. Это необходимая мера при seo продвижении страниц категорий. Таким образом, вы решаете проблему дублирования контента рубрики.
Вот пример кода, как это можно сделать.
<?php if ( $paged < 2 ) : ?>
<?php echo category_description(); ?>
<?php else : ?>
<?php endif; ?>
Используя такое условие проверки, вы можете выводить любой блок на страницах нужных вам категорий.
На этом сегодня все. Если вам был полезен этот материал, поделитесь им в социальных сетях, тем самым вы поможете сайту.