Введение в иерархию шаблонов WordPress

Опубликовано: 2019-12-11

Один из ключевых вопросов, который пользователи WordPress задают в какой-то момент своей жизни, заключается в следующем: как темы WordPress могут отображать разные страницы в зависимости от контента, который мы видим?

Вопрос, помимо того, что он абсолютно законный, еще и очень интересный. WordPress может определить, какой контент он собирается отображать, и, в зависимости от его типа, использовать тот или иной шаблон. Темы WordPress — это не что иное, как набор определенных шаблонов для каждого типа контента с некоторым количеством JavaScript для динамических элементов и CSS для стилей и цветов.

Отлично, но… как на самом деле работают шаблоны WordPress? Это то, что мы увидим шаг за шагом в этом посте.

Прежде чем мы начнем, позвольте мне показать вам картинку с ответом на этот вопрос:

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

Это иерархия шаблонов WordPress. Вы можете найти всю информацию об этом в WordPress Codex, официальной документации. Вы даже можете взаимодействовать с этой иерархией на этом классном веб-сайте.

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

Теперь давайте более подробно рассмотрим иерархию шаблонов некоторых из наиболее распространенных материалов WordPress.

Шаблоны страниц

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

Сообщения и пользовательские типы сообщений

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

  1. single-{post-type}-{slug}.php : если вам нужен определенный шаблон для определенного сообщения или определенного типа сообщения, вы должны создать этот файл PHP в своей теме. Его имя включает имя типа сообщения ( {post-type} ), которое может быть сообщением или чем-то еще ( product , если вы используете WooCommerce). И вы также должны ввести слаг или постоянную ссылку, называйте ее как хотите, в названии шаблона. Например, если я хочу использовать определенный шаблон для этого поста, мне нужно будет создать файл single-post-introduction-to-the-wordpress-template-hierarchy.php .
  2. single-{post-type}.php : если мы хотим повлиять на весь контент определенного типа поста (все посты или все продукты), мы будем использовать этот шаблон, имя которого включает только название типа поста.
  3. single.php : WordPress использует этот шаблон для отображения любого отдельного контента (определенного сообщения, определенного продукта и т. д.).
  4. singular.php : это еще один шаблон верхнего уровня для рендеринга одиночного контента любого типа.
  5. index.php : если ничего из вышеперечисленного не найдено, WordPress использует этот общий шаблон для отображения вашего контента.

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

Таким образом вы сможете понять, какие шаблоны они используют в иерархии шаблонов WordPress, и увидеть, какой контент содержится в каждом из этих шаблонов. Без сомнения, если вы хотите узнать о темах WordPress, это обязательно. Кроме того, это бесплатно!

Обычные страницы

Как и в случае с сообщениями и другими типами сообщений, WordPress использует иерархию шаблонов для отображения страниц:

  1. Выбранный шаблон: если в поле атрибутов страницы при редактировании страницы вы выбираете определенный шаблон, он всегда имеет приоритет над всеми остальными. Вы можете научиться создавать собственные шаблоны здесь.
  2. page-{slug}.php : если вы хотите, чтобы у определенной страницы был собственный шаблон, создайте этот шаблон в файле PHP, в названии которого есть слаг страницы.
  3. page-{id}.php : вы также можете напрямую использовать идентификатор страницы WordPress, к которой применяется шаблон.
  4. page.php : этот шаблон применяется ко всем страницам WordPress, если только один из предыдущих шаблонов в иерархии уже не был применен.
  5. singular.php : единый шаблон является шаблоном по умолчанию для всех страниц, сообщений, продуктов и т. д. Этот шаблон редко будет применяться, так как большинство тем в WordPress уже включают шаблон page.php .
  6. index.php : как всегда, это резервный шаблон WordPress по умолчанию.

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

Специальные страницы

В WordPress есть и другие специальные страницы, которые также используют определенные шаблоны для отображения контента. Примером этого является главная страница сайта. Помните, что главная страница выбирается в настройках WordPress в подменю « Чтение» . Для этой страницы используется следующая иерархия шаблонов:

  1. front-page.php : если вы используете статическую страницу в качестве главной в WordPress, она сначала попытается применить шаблон front-page.php .
  2. home.php : если предыдущий шаблон не найден, WordPress пытается использовать этот шаблон. Этот шаблон также используется, если вместо выбора статической страницы в качестве главной страницы вы выбрали вариант отображения последних сообщений.
  3. index.php : опять же, шаблон по умолчанию присутствует всегда.

Страница, которая показывает результаты поиска вашего WordPress, также является специальной страницей, которая может иметь свой собственный шаблон. Для этого вы можете использовать шаблон search.php . Если ваша тема не определяет его, index.php будет использоваться как обычно.

Наконец, страница, отображаемая, когда ваш сайт возвращает ошибку 404, также может быть настроена с использованием определенного шаблона WordPress. Вы должны создать файл 404.php в своей теме, и тогда этот шаблон будет применен.

Шаблоны для архивов

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

Категории и теги

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

  1. category-{slug}.php : этот шаблон используется для отображения списка контента (обычно постов), принадлежащего к определенной категории. В частности, он будет использоваться при рендеринге категории, слаг которой появляется в имени PHP-файла.
  2. category-{id}.php : если вы предпочитаете использовать идентификаторы категорий вместо слагов, вы также можете это сделать. Например, если вы хотите применить шаблон к категории 13, создайте файл шаблона с именем category-13.php .
  3. category.php : шаблон по умолчанию для всех категорий.
  4. archive.php : это самый общий шаблон для архивов в WordPress.
  5. index.php : опять же, если ваша тема не содержит более конкретного шаблона, WordPress по умолчанию использует этот файл.

Для тегов используется следующая иерархия шаблонов:

  1. tag-{slug}.php : если тег называется интервью , мы можем использовать шаблон tag-interview.php , если мы хотим создать специальный шаблон для этого тега в WordPress.
  2. tag-{id}.php : мы также можем определить шаблон через идентификатор тега.
  3. tag.php : как и в случае с category.php , это общий шаблон для тегов.
  4. archive.php : опять же, этот шаблон будет использоваться, если ничего из вышеперечисленного не существует.
  5. index.php : как всегда, это запасной шаблон.

Пользовательские типы сообщений и пользовательские таксономии

Если у нас есть настраиваемые типы контента, мы можем использовать шаблон archive-{post_type}.php , где post_type — это слаг пользовательского типа сообщения. Это отобразит список содержимого для этого типа сообщения.

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

  1. taxonomy-{taxonomy}-{term}.php : если у вас есть пользовательская таксономия под названием видеоигры в WordPress и вы хотите создать шаблон с особым дизайном для термина спорт в этой таксономии, вам нужно будет создать файл taxonomy-videogames-sports.php для использования этого шаблона.
  2. taxonomy-{taxonomy}.php : если вы хотите использовать один и тот же шаблон для всех терминов таксономии, просто используйте taxonomy-videogames.php в предыдущем примере.
  3. taxonomy.php : это шаблон по умолчанию для всех таксономий.
  4. archive.php : если ни один из вышеперечисленных шаблонов не существует, это применимо.
  5. index.php : опять же, это резервный шаблон по умолчанию.

Со всеми этими объяснениями у вас уже должно быть все необходимое для создания и идентификации шаблонов в ваших темах WordPress.

Подводить итоги

Понимание иерархии шаблонов WordPress является ключом к пониманию тем и даже разработке собственных. Никогда не помешает взглянуть на это и узнать, как это работает, чтобы обрести уверенность, когда вы начнете изменять PHP-код темы, которую используете в нашем WordPress.

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

Что вы думаете обо всем этом? Вы все еще используете шаблоны для своего контента WordPress или уже создаете все дизайны с помощью блоков? Не забудьте оставить мне комментарий ниже, если вы дошли до конца поста — мне было бы интересно узнать, как вы используете шаблоны WordPress!

Избранное изображение Эдварда Александра Рлваага на Unsplash .