Иерархия шаблонов

Оригинальное название: Template Hierarchy

Коротко

Порядок, по которому WordPress выбирает файл темы для открытой страницы: от самого точного шаблона к общему, вплоть до index.php.

Что такое «Иерархия шаблонов»

Когда приходит запрос, WordPress сначала разбирает адрес и понимает, что показать: запись, рубрику, страницу поиска или ошибку 404. Затем он составляет список подходящих имён файлов, от частного к общему, и берёт первый найденный в теме. Благодаря этому можно оформить одну рубрику или одну страницу иначе, чем остальные, просто добавив файл с нужным именем. Если ничего специального нет, сработает index.php — единственный шаблон, обязательный для классической темы.

Как выглядит цепочка

  • Одиночная запись: single-{тип}-{slug}.php → single-{тип}.php → single.php → singular.php → index.php.
  • Страница: выбранный шаблон страницы → page-{slug}.php → page-{id}.php → page.php → singular.php → index.php.
  • Рубрика: category-{slug}.php → category-{id}.php → category.php → archive.php → index.php.
  • Главная: front-page.php, затем home.php или шаблон страницы — в зависимости от настроек чтения.
  • Отдельно: search.php, 404.php, author.php, date.php.

В блочных темах цепочка та же, только файлы лежат в папке templates/ и имеют расширение .html. Если используется дочерняя тема, на каждом шаге сначала проверяется она.

Как вмешаться из кода

Иногда нужный шаблон зависит не от имени, а от условия — например, для рубрик с определённым полем. Тогда используют фильтр template_include:

add_filter( 'template_include', function ( $template ) {
    if ( is_category() && get_term_meta( get_queried_object_id(), 'is_landing', true ) ) {
        $landing = locate_template( 'category-landing.php' );
        return $landing ?: $template;
    }
    return $template;
} );

Функция locate_template() учитывает дочернюю тему, поэтому файл можно переопределить и там.

Как понять, какой файл сработал

Самый быстрый способ — плагин Query Monitor: на панели администратора он показывает использованный шаблон и всю цепочку кандидатов. Частые причины «правлю файл, а ничего не меняется»: правка в родительской теме при наличии такого же файла в дочерней, опечатка в slug рубрики, файл в подпапке, где WordPress его не ищет, а в блочной теме — сохранённая в базе копия шаблона.

Обновлено:

Все термины раздела «WordPress»

Что будем искать? Например,Продвижение