Файлы темы в WordPress. Их иерархия и порядок подключения.

Редактировали какие-нибудь готовые темы для WordPress? Наверное заметили, что в каждой своя структура файлов.

Например в одной из них за вывод рубрик отвечает category.php, а в другой это archive.php, в третьей вообще отсутствуют оба. Почему так?

Это потому, что существует порядок, следуя которому WordPress, в зависимости от текущей страницы сайта, ищет соответствующие файлы в директории темы и, если они существуют — подключает.

Этот пост должен раз и навсегда ответить на вопрос — какой из PHP-файлов темы используется для отображения той или иной страницы сайта?

Условные теги WordPress

Что такое — условные теги? Прежде всего это функции. Функции, которые позволяют определить что-либо и дать однозначный ответ (логическое true или false). «Условные» — потому что практически всегда используются внутри условия if.

К примеру, функция is_single() позволяет определить, находимся ли мы, просматривая сайт в данный момент, на странице поста.

if( is_single() ) {}

Полный список условных тегов WordPress и их документацию вы найдёте здесь.

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

Схема порядка подключения файлов шаблона WP

файлы темы в WordPress, схема подключения

На инфографике показан порядок, по которому WordPress запрашивает файлы.

Сразу же приведу пример для страницы с рубрикой с ID = 54 и ярлыком myphotos:

  1. category-myphotos.php в первую очередь WordPress ищет этот файл в папке с темой, если его не существует, то файл с следующего пункта списка,
  2. category-54.php если и этого файла нет в директории темы, то переходим к следующему пункту и так далее,
  3. category.php,
  4. archive.php,
  5. index.php;

А теперь разберемся, что означает каждая переменная (на графике — голубеньким цветом).

id
Ну насчет ID понятно. Немного дополнительной информации вы найдете в этих статьях:

ярлык
Наряду с названием и айдишником, каждый объект в WordPress, будь то посты, комментарии или таксономии (искл. пользователи) имеет ярлык. Так же, как и название объекта, ярлык задается в админке самим пользователем.
ник
Под ником подразумевается user_nicename — на моём опыте всегда совпадало с user_login (именем пользователя).
tax
Название таксоносии
term
Ярлык элемента таксономии
тип_поста
Тип поста, для которого используем данный шаблон.
MIME-тип
Как вы возможно уже поняли из схемы, это актуально для страницы вложений.

Предположим, что во вложении у нас картинка PNG, то есть image/png — для данного примера переменная может принимать значения image, png, imagepng (по приоритету — в перечисленном порядке).

ваш_шаблон
Название файла шаблона страниц — про них всё подробно расписано здесь.

Какой файл PHP используется для отображения главной страницы?

В чем отличие между index.php, home.php и front-page.php?

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

Разберем сам порядок. Сначала на схеме:

какой файл шаблона используется для отображения главной страницы

Комментирую — итак, когда мы находимся на главной странице, в первую очередь WordPress пытается подключить файл front-page.php, если же файла не существует, вторым шагом он проверяет, что указано в настройках Параметры > Чтение, короче говоря:

  • если на главной странице отображаются последние записи блога, тогда сначала ищется и подключается файл home.php, в случае его отсутствия — index.php,
  • если на главной отображается статическая страница, то применяются обычные правила для страниц (которые вы видели еще на первой схеме в начале поста).

Но файл front-page.php в любом случае остаётся в приоритете!

Подпишитесь, чтобы раз в неделю получать свежие статьи с блога по email.

Смотрите также

Комментарии 3

  • Владимир6 февраля 2016 в 13:02 #

    Спасибо за статью. Все стало ясно. Как новичок, не мог понять разницу между home страницей и front-page. Теперь все стало на места.

  • Дмитрий9 ноября 2016 в 01:11 #

    Интересует вообще необходимость archive.php.

    У меня для кастомного типа записи (name2) есть стандартный набор файлов: page-name1, single-name2, content-name2, archive-name2.
    В page-name1 прописано оформление новой страницы и цикл вывода записей.
    В файле архива тоже есть структура с циклом по аналогии с базовым файлов archive.php.
    Зачем и там и там делать циклы не догоняю.

    Зачем нужен файл архива?
    Если его удалить, то ничего не меняется на сайте.
    Мне кажется в моем случае он или не используется или где-то у меня что-то не так организовано в структуре файлов.

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

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Добрый день! В принципе вам только немного нужно доработать код из этого поста - категории уже есть, цена - это и так...

  • eveniy: Добрый день Михаил, подскажите на примере как добавить свои произвольные поля в в вашу форму фильтрации: Я так понимаю...

  • Миша: Отлично! )

  • Дмитрий: сам разобрался: в настройках кастомного типа записи недавно оптимизировал настройки и переоптимизировал: в аргументе 'ta...

  • Дмитрий: У меня по какой-то причине пропало отображение (как в колонке меню слева, так и метабокс в записях ) раздела рубрик для...