Введение: Мозг вашей темы
Представьте, что WordPress — это очень умный и педантичный библиотекарь. Пользователь просит у него книгу (переходит по URL на вашем сайте). Библиотекарь смотрит на запрос и идет к полке с книгами (к вашей теме). Но как он точно знает, какую именно книгу (файл шаблона) взять? Он следует строгому алгоритму выбора — Иерархии шаблонов (Template Hierarchy).
Это фундаментальная концепция в разработке тем для WordPress. Понимание иерархии шаблонов — это ключ к созданию гибких, правильно работающих тем и к решению проблем с отображением контента. Давайте разберемся, как это работает.
Что такое Иерархия шаблонов?
Иерархия шаблонов — это система приоритетов, которую WordPress использует для автоматического выбора правильного файла шаблона (.php
) из папки вашей темы для отображения запрошенной страницы.
Проще говоря, это список правил вида: «Если пользователь смотрит на запись отдельно, сначала ищи файл single-post.php
, если его нет — ищи single.php
, а если и его нет — бери index.php
».
WordPress делает этот выбор автоматически, без вашего вмешательства. Ваша задача, как разработчика темы, — создать нужные файлы, чтобы перехватить этот выбор и дать движку именно тот шаблон, который вы хотите.
Визуализация: Карта иерархии
Лучший способ понять иерархию — увидеть ее. Классическая схема иерархии шаблонов выглядит так:
(Представьте здесь известную схему, которую вы можете легко найти в интернете по запросу «WordPress Template Hierarchy»)
Ключевой принцип: WordPress всегда ищет наиболее специфичный подходящий файл шаблона. Если он его не находит, он движется вверх по иерархии (к более общим шаблонам), пока не достигнет корневого файла index.php
.
Разбираем на примерах: Как это работает на практике
1. Главная страница (Home Page)
Запрос: https://yoursite.com/
Порядок выбора:
front-page.php
— Создайте этот файл, если хотите сделать уникальный дизайн главной страницы.home.php
— Часто используется для отображения ленты последних записей (блога).index.php
— Файл по умолчанию. Должен присутствовать в каждой теме!
Важно: Различие между
front-page.php
иhome.php
часто путают.
front-page.php
— главная страница сайта. Она может быть либо статической страницей, либо лентой записей (настраивается в «Настройки -> Чтение»).home.php
— страница, которая отображает ленту записей, даже если главная является статической.
2. Отдельная запись (Single Post)
Запрос: https://yoursite.com/2023/10/01/my-amazing-post/
Порядок выбора:
single-{post_type}-{slug}.php
(напр.,single-book-harry-potter.php
)single-{post_type}.php
(напр.,single-book.php
) — Для произвольного типа записиbook
.single.php
— Основной шаблон для всех записей.singular.php
— Общий шаблон для любых single-страниц (и записей, и страниц).index.php
3. Страница (Page)
Запрос: https://yoursite.com/about-us/
Порядок выбора:
page-{slug}.php
(напр.,page-about-us.php
) — По ярлыку (slug) страницы.page-{id}.php
(напр.,page-15.php
) — По ID страницы. Не рекомендуется, так как ID может поменяться при переносе.page.php
— Основной шаблон для всех страниц.singular.php
— Общий шаблон для любых single-страниц.index.php
4. Архивы (Archives)
Запрос: https://yoursite.com/category/news/
или https://yoursite.com/author/admin/
Порядок выбора для рубрик:
category-{slug}.php
(напр.,category-news.php
)category-{id}.php
(напр.,category-5.php
)category.php
archive.php
— Общий шаблон для всех архивов.index.php
Аналогично работают архивы меток, авторов, дат и произвольных типов записей:
- Автор:
author-{nicename}.php
->author-{id}.php
->author.php
->archive.php
->index.php
- Произвольный тип записи (Custom Post Type):
archive-{post_type}.php
(напр.,archive-product.php
) ->archive.php
->index.php
5. Страница поиска (Search Results)
Запрос: https://yoursite.com/?s=wordpress
Порядок выбора:
search-{query}.php
(напр.,search-wordpress.php
) — Поиск по конкретному запросу (редко используется).search.php
— Основной шаблон результатов поиска.index.php
6. Страница 404 (Ошибка «Не найдено»)
Запрос: https://yoursite.com/url-which-does-not-exist/
Порядок выбора:
404.php
— Специальный шаблон для страницы ошибки.index.php
Как использовать эти знания? Практические советы
- Начните с
index.php
: Это обязательный, самый общий шаблон. Ваша тема не будет работать без него. Создавайте его первым. - Дробите шаблоны по мере необходимости: Не пытайтесь весь функционал уместить в
index.php
. Создавайте более специфичные файлы:- Хотите изменить дизайн страниц? Создайте
page.php
. - Нужен уникальный вид для записей? Создайте
single.php
. - Нужно особое отображение для рубрики «Новости»? Создайте
category-news.php
.
- Хотите изменить дизайн страниц? Создайте
- Используйте Цикл WordPress (The Loop): Именно внутри этих шаблонов работает Цикл — функция
while ( have_posts() )
, которая выводит основной контент. - Включайте общие части: Используйте функции
get_header()
,get_footer()
,get_sidebar()
иget_template_part()
для подключения повторяющихся элементов (header, footer) и организации кода.
Как отладить иерархию? Полезный плагин
Если вы не уверены, какой шаблон WordPress использует для конкретной страницы, установите плагин «What The File». Он покажет вам прямо в админ-баре, какие файлы шаблонов были использованы для отображения текущей страницы. Это невероятно полезный инструмент для обучения и отладки.
Резюме: Главные выводы
- Иерархия существует для гибкости: Вам не нужно прописывать логику выбора шаблонов вручную. Достаточно создать файл с правильным именем в нужном месте.
- WordPress движется от частного к общему: Он всегда ищет самый подходящий специфичный шаблон и, если не находит,fallback’ится к более общим.
index.php
— это основа: Это запасной вариант для всего. Он должен быть в каждой теме.- Имена файлов — это магия: Правильное именование файлов шаблонов — это 90% успеха. Схема
{тип}-{уточнение}.php
является ключевой.
Понимание иерархии шаблонов превращает разработку тем из набора случайных действий в осознанный и структурированный процесс. Вы начинаете не просто редактировать код, а общаться с WordPress на его языке, точно указывая ему, что и как показывать вашим пользователям. Удачи в изучении!