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

Как уже говорилось, файлы шаблонов модульные, повторно используемые файлы, применяемые для создания страниц на вашем WordPress сайте. Некоторые файлы шаблонов (например, шаблон шапки и подвала) используются на всех страницах вашего сайта, а другие используются только при определенных условиях.

Эта статья объясняет, как WordPress определяет какой файл(ы) шаблона использовать на отдельных страницах. Если вы хотите настроить существующую тему WordPress это поможет вам решить, какой файл шаблона должен быть отредактирован.

Совет: Вы также можете использовать условные теги, чтобы контролировать какие шаблоны загружаются на определенной странице.

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

Обзор

WordPress использует строку запроса, для решения, какой шаблон или набор шаблонов должны быть использованы, чтобы отобразить страницу. Строка запроса это информация, которая содержится в ссылке на каждой части вашего сайта. Она следует после начального знака вопроса и может содержать ряд параметров, разделенных амперсанд (&).

Проще говоря, WordPress ищет вглубь по иерархии шаблона до тех пор, пока не найдет подходящий файл-шаблон. Чтобы определить, какой файл шаблона использовать, WordPress:

  1. Проверяет совпадение каждой строки запроса к типу запроса, чтобы решить, какая страница запрашивается (например, страница поиска, страница категории, и т.д.);
  2. Выбирает шаблон в порядке, определяемым иерархией шаблонов;
  3. Ищет файлы шаблонов с конкретными именами в каталоге текущей темы и использует первый подходящий файл-шаблон, как указано в иерархии.

За исключением основного index.php файла шаблона, вы можете выбрать, реализовывать ли конкретный файл шаблона или нет.

Если WordPress не может найти файл шаблона с подходящим именем, то переходит к следующему файлу в иерархии. Если WordPress не может найти ни одного подходящего файла шаблона, файл темы index.php будет использоваться.

Примеры

Если ваш блог находится на http://example.com/blog/ и посетитель нажимает на ссылку страницы категории, как http://example.com/blog/category/your-cat/, WordPress ищет файл шаблона в каталоге текущей темы, который соответствует ID категории для получения нужной страницы. Более конкретно, WordPress следует такой процедуре:

  1. Ищет файл шаблона в каталоге текущей темы, что соответствует ярлыку категории. Если ярлык категории «unicorns«, то WordPress ищет файл шаблона с именем category-unicorns.php
  2. Если category-unicorns.php отсутствует и ID категории 4, то WordPress ищет файл шаблона с именем category-4.php.
  3. Если category-4.php отсутствует, то WordPress будет искать общий файл шаблона категорий, category.php.
  4. Если category.php не существует, то WordPress будет искать общий файл шаблона архивов, archive.php.
  5. Если archive.php также отсутствует, то WordPress вернется к основному файлу шаблона темы, index.php.

Визуальный обзор

Следующая диаграмма показывает, какие файлы шаблонов вызываются для генерации страницы WordPress, основываясь на иерархии шаблонов WordPress.

wp-template-hierarchy

 

Вы также можете взаимодействовать с этой схемой.

Детальная иерархия шаблона

В то время как иерархию шаблона легче понять, с помощью диаграммы, следующие разделы описывают порядок, в котором файлы шаблонов вызываются WordPress для ряда запросов.

Отображение домашней страницы

По умолчанию, WordPress устанавливает отображение последних записей в блоге на главной странице вашего сайта. Эта страница называется индексной для записей блога. Вы также можете задать, чтобы записи в блоге, отображались на отдельной статической странице. Файл шаблона home.php используется для генерации индекса записей в блоге, независимо от того используется он в качестве главной страницы или на отдельной статической странице. Если home.php не существует, WordPress будет использовать index.php.

  1. home.php
  2. index.php

Примечание: Если front-page.php существует, то он будет перекрывать home.php шаблон.

Отображение главной страницы

front-page.php файл шаблона используется для отображения главной страницы вашего сайта, независимо отображает ли он индекс записей блога (упомянутые выше) или статическую страницу. Шаблон главной страницы имеет приоритет над шаблоном индекса записей (home.php). Если front-page.php файл не существует, WordPress будет использовать либо home.php или page.php файл в зависимости от установок в Настройки → чтение. Если ни один из этих файлов существует, он будет использовать index.php файл.

  1. front-page.php — Используется как для «ваши последние записи» так и для «статической страницы«, как указано в секции «На главной странице отображать» раздела Настройки → чтение.
  2. home.php — Если WordPress не может найти front-page.php и установлен пункт «ваши последние записи» в секции «На главной странице отображать«, то он будет искать home.php. Кроме того, WordPress будет искать этот файл когда установлена «страница записей» в секции «На главной странице отображать«.
  3. page.php — Когда «главная страница» установлена в секции «На главной странице отображать«.
  4. index.php — Когда «ваши последние записи» установлено в секции «На главной странице отображать«, но home.php не существует или когда «главная страница» установлена, но page.php не существует.

Как вы можете видеть, есть много правил, какой путь WordPress выбирает. Использование диаграммы выше — лучший способ определить, что будет отображать WordPress.

Отдельная запись

Шаблон используется для отображения отдельной записи. WordPress использует следующий путь:

  1. single-{post-type}.php — Во-первых, WordPress ищет шаблон для конкретного типа записи. Например, типом записи является product, WordPress будет искать single-product.php.
  2. single.php — WordPress затем ищет single.php.
  3. index.php — Наконец, как уже упоминалось выше, WordPress попадает обратно в index.php.

Страница

Файл шаблона используется для визуализации статической страницы (тип записи — страница). Обратите внимание, что в отличие от других типов записей, страницы особенные в WordPress и используются так:

  1. Пользовательский файл шаблона — шаблон страницы присвоенный странице. См get_page_templates().
  2. page-{slug}.php — Если ярлык страницы recent-news, WordPress будет искать page-recent-news.php.
  3. page-{id}.php — Если идентификатор страницы 6, WordPress будет искать и использовать page-6.php.
  4. page.php
  5. index.php

Категория

Для показа архивов категорий WordPress использует следующий путь:

  1. category-{slug}.php — Если ярлык категории news, WordPress будет искать category-news.php.
  2. category-{id}.php — если ID категория 6, WordPress будет искать category-6.php.
  3. category.php
  4. archive.php
  5. index.php

Метка

Для показа архива метки WordPress использует следующий путь:

  1. tag-{slug}.php — Если ярлыком тега является sometag, WordPress будет искать tag-sometag.php.
  2. tag-{id}.php — Если ID тега 6, WordPress будет искать tag-6.php.
  3. tag.php
  4. archive.php
  5. index.php

Пользовательские таксономии

Пользовательские таксономии используют несколько иной путь к файлу шаблона:

  1. taxonomy-{taxonomy}-{term}.php — Если таксономия sometax и термин таксономии someterm, то WordPress будет искать taxonomy-sometax-someterm.php. В случае форматов записи, таксономия будет «post_format» и термины «post-format-{format}» т.е. taxonomy-post_format-post-format-link.php для записи в формате «ссылка».
  2. taxonomy-{taxonomy}.php — Если таксономия sometax, WordPress будет искать taxonomy-sometax.php.
  3. taxonomy.php
  4. archive.php
  5. index.php

Пользовательские типы записи

Пользовательские типы записей используют следующий путь, чтобы сделать соответствующую индексную страницу архива.

  1. archive-{post_type}.php — Если тип записи product, WordPress будет искать archive-product.php.
  2. archive.php
  3. index.php

Страница автора

Основываясь на приведенных выше примерах, отображение индексной страницы архива автора довольно понятно:

  1. author-{nicename}.php — Если имя автора matt, WordPress будет искать author-matt.php.
  2. author-{id}.php — Если у автора ID 6 , WordPress будет искать author-6.php.
  3. author.php
  4. archive.php
  5. index.php

Дата

Архив дат отображается как и можно было ожидать:

  1. date.php
  2. archive.php
  3. index.php

Результат поиска

Результаты поиска следует той же схеме, как и другие типы шаблонов:

  1. search.php
  2. index.php

404 (Не найдено)

Точно так же, 404 файлы шаблонов вызываются в следующем порядке:

  1. 404.php
  2. index.php

Вложение

Отображение страницы вложений (тип записи attachment) следует по такому пути:

  1. MIME_type.php — это может быть любой MIME-тип (например, image.php, video.php, application.php). Для text/plain, используется следующий путь (в порядке убывания):
    text.php
    plain.php
    text_plain.php
  2. attachment.php
  3. single-attachment.php
  4. single.php
  5. index.php

Фильтр иерархии

Система шаблонов WordPress позволяет фильтровать иерархию. Это означает, что вы можете вставлять и изменять вещи в определенных точках иерархии. Фильтр (находится в get_query_template() функции) использует это имя фильтра: «{$type}_template«, где $type является именем файла в иерархии, без .php расширения.

Вот полный список всех типов шаблонов в иерархии фильтра:

  • index_template
  • 404_template
  • archive_template
  • author_template
  • category_template
  • tag_template
  • taxonomy_template
  • date_template
  • home_template
  • front_page_template
  • page_template
  • paged_template
  • search_template
  • single_template
  • text_template, plain_template, text_plain_template (все типы MIME)
  • attachment_template
  • comments_popup
Навигация по разделам:

1 Комментарий

  1. Макс

    Спасибо за статью, а то уже пару суток не мог разобраться. Особенно помогла картинка с иерархией.

    Ответить

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *