Шаблоны в рамках темы WordPress, как и во многих других CMS, имеют строго определенную иерархию. Что это означает на практике?
Когда WP требуется определить какой шаблон (файл из папки темы) использовать, движок, в зависимости от типа страницы, проверяет наличие определенных файлов. Если существует несколько файлов, подходящих на роль шаблона текущей страницы, тогда выбирается наиболее «кастомный», подходящий для самого редкого случая.
Можно говорить о как минимум трех уровнях иерархии.
Базовый шаблон в иерархии WordPress
index.php
Это основной шаблон, который будет использован, если других вариантов не найдено. Тема оформления может вообще содержать только этот шаблон, и сайт будет работать, отображая все страницы, используя только его.
Уровень структурных единиц
Этот уровень «кастомизации» различает страницы по их назначению в структуре сайта. Почти любой сайт имеет главную страницу, разделы, ленты публикаций (новости, ленты по тегам, категориям и пр.) и конечные публикации (статьи, новости, работы портфолио и т.п.).
Для каждого случая WordPress проверяет свой шаблон:
- arhive.php — ленты публикаций.
- single.php — конечная статья блога (запись или кастомный тип).
- page.php — страница раздела сайта (тип — страницы).
- home.php — общая лента публикаций, если главная должна показывать ленту постов.
- front-page.php — заменяет page.php, если главная — это выбранный раздел сайта, или заменяет home.php.
- 404.php — шаблон для 404-й ошибки.
- search.php — страница поиска по сайту.
Уровень с параметризацией
Следующий уровень уже зависит от определенных параметров. Это может быть и тип публикации, адрес или POST_ID страницы и т.п. В имени файла шаблона фигурирует значение одной из переменных.
Наиболее развита иерархия у архивов.
Авторские архивы
Могут собственный шаблон (author.php), в том числе и персонально для каждого автора (author-{$id}.php или author-{$nicename}.php).
Архивы таксономии (категории, теги и пр.)
Таксономия в WP имеет много лиц. Хотя категории, теги и пользовательские словари — суть одно, но WP поддерживает разные имена шаблонов для встроенных и пользовательских словарей.
Архив рубрик (категорий) — category.php, category-{$id}.php, category-{$slug}.php.
Архив меток (тегов) — tag.php, tag-{$id}.php, tag-{$slug}.php.
Архив таксономии — taxonomy.php, taxonomy-{$taxonomy}.php (имя словаря), tag-{$taxonomy}-{$term}.php (имя словаря и slug термина).
Календарные архивы
Архивы за год, месяц, день будет выводится в шаблоне date.php. Возможно ли деление по конкретным годам, месяцам и т.п. — я не проверял. :)
Конечные публикации и вложения
Вордпресс поддерживает страницы вложений. Вообще каждая картинка, файл, загруженные в «Медиафайлы», имеет свою страницу на сайте. Чтобы страница вложений отличалась от публикаций (single.php), используйте шаблон attachment.php. Для каждого типа вложения можно определить отдельный шаблон — {$mimetype}.php.
Если внешний вид разных типов публикаций отличается, можно создать шаблоны single-{$posttype}.php.
Страницы
После page.php в иерархии WordPress идет шаблон page-{$id}.php или page-{$slug}.php. Для каждой страницы в редакторе можно задать собственный шаблон. Нужно лишь дать шаблону имя, чтобы WP его «подхватил» и показал в списке.
Прочие шаблоны
Мы рассмотрели только часть шаблонов, которые используются только для оформления страниц сайта. Но WP распознает еще и шаблоны для особых элементов — блока комментариев (comments.php), сайдбаров (sidebar.php, sidebar-{$id}.php) и т.п.
Для них работают схожие принципы template suggestions.