Инструкция по созданию отдельных шаблонов для категорий в WordPress

Переходим к вопросам кастомизации стиля рубрик 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?

Файл создали, теперь нужно его наполнить, чтобы выводить записи и дополнительную информацию о разделе сайта. Большинство разработчиков делают следующим образом.

  1. Они копируют файл category.php или же если его нет, то archive.php темы, которая используется на сайте, например на рабочий стол.
  2. Переименовывают его в шаблон с привязкой к конкретной категории, например category-19.php или же category-rubrika1.php.
  3. Загружают его в корневую папку темы, должен получиться следующий путь: /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; ?>

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

На этом сегодня все. Если вам был полезен этот материал, поделитесь им в социальных сетях, тем самым вы поможете сайту.

Поделиться в социальных сетях:
Нет комментариев к данной статье

Оставить новый комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *