Часто бывает необходимо задать для отдельных записей, страниц или рубрик уникальный дизайн. Например, можно изменить внешний вид какой-то конкретной записи, страницы или категории. Часто это востребовано для торговых или рекламных площадок, где нужно как-то по особенному выделить страницу с конкретным товаром или услугой.
Система шаблонов WordPress
В WordPress существует довольно гибкая система шаблонов. В одной и той же теме Вы можете использовать различные шаблоны оформления для различных разделов сайта. Перед тем, как отобразить тот или иной раздел сайта, “движок” в определенной последовательности перебирает шаблоны, пока не найдет нужный.
Рассмотрим отдельно, как создать произвольные шаблоны для Категории, Записи и Страницы.
Произвольный шаблон для рубрики
Для вывода страницы категории (рубрики) WordPress использует следующую иерархию:
category-{SLUG}.php -> category-{ID}.php -> category.php -> archive.php -> index.php
Это означает, что поначалу “движок” пытается использовать шаблон для отдельной категории, используя ее идентификатор (слаг или ярлык). Например, для рубрики Мониторы со слагом monitors файл шаблона должен иметь название category-monitors.php. В случае, если такой файл отсутствует, то будет попытка использовать шаблон с уникальным идентификатором категории, например, 55. В таком случае система будет искать файл category-55.php. Если и такого шаблона нет, то будут использован общий шаблон для всех рубрик – category.php. При его отсутствии задействуется общий шаблон архивов (archive.php). Если ни один из перечисленных шаблонов не был найден, то для отображения рубрики будет использован самый главный файл – index.php.
Также обязательно ознакомьтесь с темой создания кастомного типа записей посредством register post type.
Как создать шаблон для категории?
Для начала нужно определить слаг категории, для которой необходимо создать уникальный шаблон. Для этого нужно в админ-панели перейти Записи -> Рубрики.
На странице рубрик можно заметить, что напротив названия каждой категории для нее указан ярлык. Это и есть нужное нам название слага. В качестве примера будем работать с категорией Мониторы со слагом monitors.
Для создания уникального шаблона нужно перейти в папку Вашей активной темы (wp-content\themes\НАЗВАНИЕ_ТЕМЫ) и создать там файл с именем category-monitors.php, в котором задать нужный Вам вывод страницы категории Мониторы.
Как было сказано выше, шаблон для рубрики также можно создать по ее уникальному идентификатору (ID). Чтобы его узнать, следует в разделе Рубрики под названием категории перейти по ссылке Изменить.
В итоге будет открыта страница редактирования категории. Теперь нужно обратить внимание на адресную строку Вашего веб-браузера и найти там следующее:
/wp-admin/term.php?taxonomy=category&tag_ID=3
Параметр tag_ID=3 означает, что наша рубрика Мониторы имеет идентификатор 3. Теперь нужно снова перейти в каталог с темой и создать там файл со следующим именем:
category-3.php
Важно отметить, что оба способа будут работать также и с дочерними темами.
Как создать шаблон для страницы?
Для вывода страниц, WordPress действует по следующей схеме:
page-{SLUG}.php -> page-{ID}.php -> page.php -> index.php
Видно, что действия со страницами аналогичны рубрикам. Исключение составляет лишь файл page.php, который является общим шаблоном для страниц. Действия по созданию уникального шаблона также весьма схожи (со слагом или ID страницы). Идентификатор нужной страницы можно посмотреть, перейдя на страницу ее редактирования, где в адресной строке найти следующее:
/wp-admin/post.php?post=167
Значение 167 параметра post и есть уникальный идентификатор страницы.
Как создать шаблон для записи?
Для вывода содержимого отдельной записи WordPress использует следующую иерархию шаблонов:
single-{SLUG}.php -> single-{ID}.php -> single.php -> index.php
Процесс создания уникальных шаблонов для записей в принципе аналогичен страницам. Их также можно идентифицировать как по слагу, так и по ID.
Помимо отдельных записей, шаблоны можно также создать и для всех записей из определенной рубрики. Например, во всех записях из категории Пылесосы Вы захотите выводить только изображения, а в рубрике Телевизоры еще и видеообзоры.
К примеру, создадим шаблон для всех записей из категории Мониторы. Для этого нужно выполнить ряд несложных действий:
- Создать в каталоге темы файл single-monitors.php.
- Сделать копию файла single.php, назвав ее, например, single-default.php.
- Открыть файл single.php, удалить все содержимое и вставить следующий код:
<?php $post = $wp_query->post; if ( in_category( '3' ) ) { //ID категории include( TEMPLATEPATH.'/single-monitors.php' ); } else { include( TEMPLATEPATH.'/single-default.php' ); } ?>
или вместо уникального идентификатора категории можно вставить ее слаг:
<?php $post = $wp_query->post; if ( in_category( 'monitors' ) ) { //слаг категории include( TEMPLATEPATH.'/single-monitors.php' ); } else { include( TEMPLATEPATH.'/single-default.php' ); } ?>
Что делает этот код? Мы явно даем понять “движку”, что если выбранная категория имеет ID со значением 3 или ее слаг равен “monitors”, то в таком случае следует подключить шаблон single-monitors.php. Во всех остальных случаях будет задействован файл single-default.php.
Многим больше нравится отображение в рубриках карточек с бесконечной подгрузкой вместо обычной пагинации. Сделать такую можно, добавив ajax-кнопку “Загрузить еще” плагином.
Нажмите, пожалуйста, на одну из кнопок, чтобы узнать понравилась статья или нет.
здравствуйте. получилось все сделать по вашей инструкции. но некоторые записи в постах теперь стали выводиться в виде ромбиков со знаками вопроса. подскажите, пожалуйста, как это исправить? пересохранял файлы в utf-8 без BOM, но это не помогло.
Добрый день!
Попробуйте создать файл в другом редакторе.
С уважением Михаил
Добрый день, а если нам нужно создать отдельные шаблоны для нескольких записей, как поступить? почему- то получается только для одной рубрики изменить шаблон записей
Здравствуйте, Такой вопрос создал не большой плагин для публикации стихов с помощью произвольного типа записей. Как мне вывести шаблон архива в произвольной записи, но не из папки темы а из папки плагина, чтобы не закидывать файлы шаблон каждый раз при обновление темы или при смене темы пользователем плагина.
Спасибо узнал для себя много чего нового!
Здравствуйте
Благодарю за материал. Помогли мне вспомнить как назначается отдельный шаблон каждой рубрике.