Иерархия шаблонов блочной темы WordPress
Полная иерархия шаблонов блочной темы (FSE): для каждого типа запроса — упорядоченный список шаблонов, которые ищет WordPress, от самого специфичного к общему, с откатом до index.html. Аналог классической схемы иерархии для эпохи блоков.
Для каждого запроса WordPress ищет эти шаблоны по порядку — от самого конкретного к более общему — и останавливается на первом, который существует в папке /templates вашей темы. Цепочка всегда заканчивается файлом index.html.
Главная страница
Главная страница сайта — независимо от того, выводятся ли на ней последние записи или задана статическая страница.
- front-page.html
- home.html
- index.html
front-page.html wins regardless of the Settings → Reading choice. If the front page is a static page and there is no front-page.html, it falls through to the static-page chain, not home.html.
Лента записей блога
Страница со списком последних записей («страница записей» в разделе Настройки → Чтение).
- home.html
- index.html
Отдельная запись
Отдельная запись блога.
- single-post-{slug}.html
- single-post.html
- single.html
- singular.html
- index.html
Отдельная запись произвольного типа
Отдельная запись произвольного типа записей (например, «книга»).
- single-{post-type}-{slug}.html
- single-{post-type}.html
- single.html
- singular.html
- index.html
Для типа записей «book» с ярлыком «dune»: сначала single-book-dune.html, затем single-book.html, затем single.html.
Статическая страница
Обычная страница WordPress.
- page-{slug}.html
- page-{id}.html
- page.html
- singular.html
- index.html
Страница с произвольным шаблоном
Страница, которой в панели «Шаблон» редактора назначен произвольный шаблон.
- {custom-template}.html
- page-{slug}.html
- page-{id}.html
- page.html
- singular.html
- index.html
Произвольные шаблоны объявляются в массиве customTemplates файла theme.json и хранятся в каталоге /templates. Назначенный шаблон имеет приоритет над всей цепочкой страницы.
Архив рубрики
Архив со списком записей одной рубрики.
- category-{slug}.html
- category-{id}.html
- category.html
- archive.html
- index.html
Архив метки
Архив со списком записей с одной меткой.
- tag-{slug}.html
- tag-{id}.html
- tag.html
- archive.html
- index.html
Архив произвольной таксономии
Архив для элемента произвольной таксономии.
- taxonomy-{taxonomy}-{term}.html
- taxonomy-{taxonomy}.html
- taxonomy.html
- archive.html
- index.html
Архив автора
Архив записей одного автора.
- author-{nicename}.html
- author-{id}.html
- author.html
- archive.html
- index.html
Архив по дате
Архив по году, месяцу или дню.
- date.html
- archive.html
- index.html
Архив типа записей
Индекс архива произвольного типа записей, для которого задан параметр has_archive.
- archive-{post-type}.html
- archive.html
- index.html
Результаты поиска
Страница результатов поиска по сайту.
- search.html
- index.html
404 (не найдено)
Показывается, когда по URL не найдено подходящего содержимого.
- 404.html
- index.html
Страница вложения
Страница отдельного медиавложения.
- attachment.html
- single.html
- singular.html
- index.html
Многие сайты полностью отключают страницы вложений (это малосодержательные страницы). Если вы их оставляете, работает такая цепочка.
Страница политики конфиденциальности
Страница, назначенная политикой конфиденциальности сайта в настройках.
- page-privacy-policy.html
- privacy-policy.html
- page.html
- singular.html
- index.html
Чем это отличается от классической иерархии (PHP)
- Шаблоны — это файлы .html в каталоге /templates, а не файлы .php в корне темы. Никакого single.php нет — есть single.html.
- Переиспользуемые области (шапка, подвал) — это ЧАСТИ шаблона в каталоге /parts, которые подключаются блоком wp:template-part, а не PHP-вызовами get_header() / get_footer().
- Здесь нет ни цепочки get_template_part(), ни get_header()/get_footer(). Компоновка выполняется блоком «Часть шаблона» внутри файлов .html.
- index.html ОБЯЗАТЕЛЕН. block theme без templates/index.html не является валидной — это обязательный последний запасной вариант для всех перечисленных выше маршрутов.
- Тема считается block theme по НАЛИЧИЮ файла templates/index.html вместе с theme.json, а не по какому-либо флагу в заголовке.
- Любой из этих шаблонов можно отредактировать в редакторе сайта (Внешний вид → Редактор) и сохранить изменения в базе данных — после чего они ПЕРЕОПРЕДЕЛЯЮТ файлы темы до тех пор, пока вы не сбросите настройку. Это ставит в тупик тех, кто пытается понять, «почему изменение шаблона ничего не меняет».