Приходилось ли вам попадать на сайты, где каждая отдельная рубрика оформлена по-другому? При разработке тем для оформления WordPress-сайтов очень часто делают разные шаблоны для разных категорий, тегов, кастомных типов записей и таксономии. К каждой группе страниц с разными рубриками можно добавить свои параметры и возможности: подписку на эту рубрику, графику, описание категорий и выбор разного типа верстки. В этом посте речь пойдет о том, как создавать отдельные шаблоны рубрик для сайтов на WordPress.
Смотрите также:
WordPress и шаблон иерархии для страниц рубрик
WordPress — мощная система управления шаблонами. Тему для WordPress можно создать на основании разных шаблонов для разных секций. WordPress использует предопределенную иерархию для отображения страниц на сайте. Для показа рубрик используется следующий порядок файлов для шаблонов:
category-slug.php → category-id.php → category.php → archive.php → index.php
Для начала в WordPress происходит автоматический поиск шаблона для каждой конкретной рубрики, например, category-design.php и шаблон для нее будет использоваться для отображения рубрики "Design".
Если тег рубрики не найден, тогда в WordPress происходит поиск значения id для рубрики, к примеру category-6.php. Затем происходит поиск общей рубрики шаблонов в файле category.php. Если такого шаблона нет, то происходит поиск общего архивного шаблона, например archive.php. И наконец, будет использоваться шаблон index.php для показа рубрики.
Создаем шаблон рубрик в WordPress
Давайте для начала посмотрим на типичный шаблон в файле category.php:
<?php /** * A Simple Category Template */ get_header(); ?> // fetch header template <section id="primary" class="site-content"> <div id="content" role="main"> // Check if there are any posts to display <?php if ( have_posts() ) : ?> <header class="archive-header"> <h1 class="archive-title">Category: <?php single_cat_title( '', false ); ?></h1> // Display optional category description <?php if ( category_description() ) : <div class="archive-meta"><?php echo category_description(); ?></div> <?php endif; ?> </header> <?php // The Loop while ( have_posts() ) : the_post(); <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2> <small><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></small> <div class="entry"> <?php the_content(); ?> <p class="postmetadata"><?php comments_popup_link( 'No comments yet', '1 comment', '% comments', 'comments-link', 'Comments closed'); ?></p> </div> <?php endwhile; // End Loop else: ?> <p>Sorry, no posts matched your criteria.</p> // End the first if <?php endif; ?> </div> </section> //fetch sidebar and footer templates <?php get_sidebar(); ?> <?php get_footer(); ?>
Предположим, что у нас есть рубрика "Design" с меткой "design", и эта рубрика должна отличаться от остальных. Для этой цели надо создать шаблон. Идем в Внешний вид → Редактор. Выбираем из всех файлов файл category.php, а если его нет, то переходим к файлу archive.php. Если ни одного из шаблонных файлов нет, тогда вы скорее всего используете WordPress Theme Framework, и это практическое руководство вам не поможет.
Если вы нашли один из этих файлов, скопируйте содержимое category.php и вставьте в редактор вроде Notepad++. Новый файл сохраните как category-design.php.
Подключитесь к сайту при помощи FTP-клиента. Перейдите в /wp-content/themes/ваша-текущая-тема/ и загрузите файл category-design.php в папку с темой. Так можно создать столько шаблонов для рубрик, сколько вам необходимо. Достаточно к каждому новому файлу добавлять название category-{category-slug}.php.
Рассмотрим код такой рубрики на примере шаблона вида category-slug.php:
<?php /** * A Simple Category Template */ get_header(); ?> // fetch header template <section id="primary" class="site-content"> <div id="content" role="main"> // Check if there are any posts to display <?php if ( have_posts() ) : ?> <header class="archive-header"> // Since this template will only be used for Design category // we can add category title and description manually. // or even add images or change the layout <h1 class="archive-title">Design Articles</h1> <div class="archive-meta"> Articles and tutorials about design and the web. </div> </header> <?php // The Loop while ( have_posts() ) : the_post(); <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2> <small><?php the_time('F jS, Y') ?> by <?php the_author_posts_link() ?></small> <div class="entry"> <?php the_excerpt(); ?> <p class="postmetadata"><?php comments_popup_link( 'No comments yet', '1 comment', '% comments', 'comments-link', 'Comments closed'); ?></p> </div> <?php endwhile; // End Loop else: ?> <p>Sorry, no posts matched your criteria.</p> // End the first if <?php endif; ?> </div> </section> //fetch sidebar and footer templates <?php get_sidebar(); ?> <?php get_footer(); ?>
Для упрощения работы можно использовать еще и шаблон с использованием ID конкретной рубрики.
Использование условных тегов для рубрики
Создавая шаблоны в вашей теме, стоит сначала спросить себя, зачем вам нужны шаблоны для рубрик и вообще нужны ли они вам? В некоторых случаях внесение правок в конкретную страницу не займет много времени, и создавать специально для этого отдельный шаблон не стоит.
Также в WordPress есть поддержка многих условных тегов, которые авторы темы сами используют и предлагают использовать другим в новых шаблонах. Один из таких условных тегов — это is_category(). Использование такого условного тега помогает изменить вывод контента в зависимости от выбранных условий.
К примеру, вам надо создать рубрику для выделенных постов с названием "Featured". Теперь можно добавить информацию к конкретной архивной странице для конкретной рубрики. Для этой цели добавьте следующий код в файл category.php сразу после <? php if ( have_posts() ) : ?>
<header class="archive-header"> <?php if(is_category( 'Featured' )) : ?> <h1 class="archive-title">Featured Articles:</h1> <?php else: ?> <h1 class="archive-title">Category Archive: <?php single_cat_title(); ?> </h1> <?php endif; ?> </header>
Заключение
Изучение разработки под WordPress — не то, с чем можно справиться за пару вечеров. Но, тем не менее, настраивать и улучшать шаблоны можно и собственными силами. Да, определенный риск есть, но вы научитесь самостоятельно улучшать свой сайт, что не может не радовать.
Надеемся, этот пост поможет вам в самостоятельной настройке оформления для рубрик в WordPress. Своими отзывами и вопросами как всегда можно поделиться в комментариях.
Комментарии к записи: 6
спасибо за инфу, полезно
а есть возможность создать один шаблон сразу для нескольких категорий?
чтобы не создавать в папке темы кучу файлов
category-1.php
category-2.php
и т.д.
потому что мне нужно оформить так более 50 рубрик (и тогда получится доп.50 файлов, что не очень)
мне нужно чтобы одна отдельная категория и её подкатегории имели другую верстку
таже фигня
нет. так сделать нельзя(
можно! но это далеко не самый хороший вариант https://site-style.by/raznye-shablony-dlya-kategorij-i-stranic-zapisej/ тут написано как именно
Можно сделать в одном файле category.php. И уже в нем анализировать, какая категория просматривается.
Здраствуйте! Нельзя ли без анонса запись сделать (у меня их 5 штук), чтобы она открывалась полной записью, например как страница? И как это можно сделать? Спасибо!