Иерархия шаблонов в WordPress
[ ←Вернуться к стандартному виду ]
Перевод статьи Кодекса WordPress: Template Hierarchy. Перевод почти дословный, я старалась не отклоняться от оригинала:
Введение
Страницы сайта на WordPress собираются из файлов-шаблонов Темы подобно пазлу. Некоторые Шаблоны (например header.php и footer.php) задействованы на всех страницах, другие используются только при определенных условиях.
О чем эта статья
Эта статья дает ответ на вопрос:
Какие шаблоны используются для отображения того или иного типа страниц в WordPress?
Для кого эта статья
Со времен появления Тем в Wordpress версии 1.5, Шаблоны становятся все более настраиваемы.
Перед тем, как создать свою Тему, Вам нужно понять механизм работы Шаблонов — почему WordPress использует разные файлы Темы для вывода того или иного контента в Вашем блоге. Эта статья призвана разъяснить, когда и как используется тот или иной Шаблон.
Условные теги (Conditional Tags) и иерархия ШаблоновWordPress может несколькими способами подбирать Шаблоны в соответствии с типом контента (query types). Разработчики Тем для WordPress могут также использовать «условные теги» (Conditional Tags) для того, чтобы определенный Шаблон был использован на конкретной странице блога.Некоторые Темы могут не содержать всех файлов-шаблонов, описанных в этой статье. В некоторых Темах использованы условные теги (conditional tags) для вызова других (собственных) шаблонов. Посмотрите здесь: Создание Тем и условные теги (Conditional Tags). |
Иерархия шаблонов Темы
Общие сведения
WordPress использует строку запроса (запрос контента) (Query String), т.е. информацию, содержащуюся внутри каждой ссылки на вашем веб-сайте для того, чтобы решить какой шаблон или набор шаблонов будет использован для отображения [запрошенной]страницы.
Первым делом WordPress сравнивает каждый запрос контента из базы данных (Query String) с существующими типами контента (query types) — таким образом, WordPress определяет, какой тип контента запрошен (страница поиска, страница категории, главная страница и т.п.).
Затем выбирается нужный шаблон в соответствии с иерархией шаблонов — и страница генерируется. Использование того или иного шаблона зависит от того, присутствует ли нужный шаблон в папке активной Темы.
WordPress ищет файл-шаблон в папке текущей Темы и использует первый подходящий шаблон (в соответствии с приоритетом шаблонов для конкретного типа контента — см. примеры ниже).
За исключением основного шаблона index.php, разработчик Темы может выбрирать: создавать ли отдельный шаблон для определенного типа контента или нет. Если WordPress не может найти Шаблон с определенным именем, то он переходит к следующему Шаблону в соответствии с иерархией. Если WordPress не найдет ни одного Шаблона для данного типа контента, то будет использован основной шаблон index.php.
Примеры
Если Ваш блог находится по адресу http://domain.com/wp/
и посетитель переходит на страницу категории http://domain.com/wp/category/your-cat/,
WordPress в папке текущей Темы в первую очередь ищет шаблон, который отвечает за вывод этой категории. Если ID данной категории 4, WordPress ищет шаблон с именем category-4.php.
Если такой шаблон не найден, WordPress ищет общий для всех категорий шаблон category.php.
Если и такого файла-шаблона нет, WordPress ищет шаблон для вывода архива archive.php.
Если нет и этого файла, WordPress будет использовать основной шаблон Темы index.php.
Если посетитель переходит на главную страницу сайта http://domain.com/wp/, WordPress ищет шаблон home.php. Если файла home.php в папке Темы нет, WordPress использует файл index.php для вывода главной страницы блога.
Теперь наглядно
На этой картинке показано, какие файлы-шаблоны используются для вывода тех или иных типов страниц.
График также показывает отношение строки запроса (запрос контента) (Query Strings) к соответствующему условному тегу ( Conditional Tags).
Графический пример структуры иерархии шаблонов WP
Новая схема!!!
Подробнее о иерархии шаблонов Темы
Рассмотрим приоритет использования шаблонов при вызове разных типов контента в WordPress.
Главная страница
-
- home.php
- index.php
Одна запись
-
- single.php
- index.php
Статичная страница
-
- Шаблон, выбранный при создании или редактировании статичной страницы в выпадающем списке справа «Шаблон страницы».
Подробнее про шаблоны Статичных страниц. - если слаг (короткая ссылка) Страницы about, то для этой страницы может использоваться шаблон about.php
- page.php
- index.php
- Шаблон, выбранный при создании или редактировании статичной страницы в выпадающем списке справа «Шаблон страницы».
Страница категории
-
- Шаблон конкретной категории. Если ID категории 6, то шаблон для этой категории будет называться category-6.php
- category.php
- archive.php
- index.php
Страница тега (метки)
-
- В первую очередь шаблон для вывода постов с определенной меткой ищется по его слагу («короткая ссылка»). Если слаг метки privet, WordPress сначала ищет шаблон tag-privet.php
- tag.php
- archive.php
- index.php
Страница автора
-
- author.php
- archive.php
- index.php
Страница даты
К примеру, архив за месяц.
-
- date.php
- archive.php
- index.php
Страница результатов поиска
-
- search.php
- index.php
Страница 404 (ничего не найдено)
-
- 404.php
- index.php
Аттачменты
Шаблоны для аттачментов (прикрепленных файлов) (картинки, видео и т.д., открываемые на отдельной странице)
-
- image.php, video.php, audio.php, application.php и другие первые слова из названия MIME типов.
- attachment.php
- index.php

Марина, значит вам нужно изучить документацию к своему ftp клиенту как там права на файлы выставлять. Гугл, например, по запросу ftp клиент chmod выдает подробные статьи с картинками.
Sonika, спасибо, но наверно я чего-то непонимаю, в FTP-клиенте правая клавиша мыши у меня не работает. Простите, если отвлекаю с пустяками, но не знаю, как последовать вашей рекомендации. И еще, уточните пожалуйста, на какой файл кликать надо. Темы лежат в папках и внутри много файлов и чет я запуталась совсем.
Марина, CHMOD 666 на файлы Темы, поставить можно через ftp клиент, которым вы файлы на хостинг закачивали. Правой клавишей мышки на файл и далее в контекстном меню ищете меню CHMOD или properties.
Sonika, привет! Очень нравится ваш блог! Теплый, уютный и очень полезный!
Я недавно заинтересовалась WP и конечно возникает много вопросов. Роюсь в инете,пытаясь найти на них ответы. Но вот один вопрос никак не могу решить, может быть вы поможете? Касается она редактора тем. Там есть такая запись: «Чтобы сохранить изменения, нужно сделать этот файл доступным для записи. Дополнительную информацию можно получить в Кодексе.» Пошла в кодекс, перевела ( как смогла), но не смогла понять, как все ж таки сделать файлы доступными для записи. Буду благодарна, если разъясните.
Спасибо!
Удачи и процветания вашему проекту!
Мне все таки удалось воплатить в жизнь то, что я хотел :). И обошлось все без всяких громоских конструкций, просто задал счетчик, равный нулю. Если счетчик нулевой то значит первый пост и его оформление, если равен 1 то значит последующие посты. И к нему же добавил проверку что это первая страница, то есть на второй странице все в виде цитат :)
У меня на главной первый пост идет целиком, а остальные 9 — идут в виде цитат (extract). Я хочу чтоб на следующий страницах и так далее все посты также шли в виде цитат.
Не совсем понял каким образов встроить PageNavi...
Вот схематически если изобразить :)
//первый пост //второй и последующие посты, лупаSonika, вы мой спаситель, а я все не мог найти подобную статью :). Буду пробывать...)
Айрат, что значит вручную? Query_posts? Добавляйте
Sonika, у мну такой вопрос — у меня вывод постов на главной странице сделан в ручную и из-за этого страничка «посмотреть предыдущие посты» (обычно имеет формат blog/page/2 и тд) у меня не работает. Не знаете может есть какой-то шаблон отвечающий за вывод этих страничек или где поковырять можно? :)
Этот пост тоже распечатал!
Ссылку «Версия для печати» — в студию!
Спасибо !!!!
отлично!!! Все супер!
Спасибо будет время разберусь, а пока просто убрал не нужные страницы с блока меню.
Страницы существуют , ИХ НЕЛЬЗЯ РАЗБИТЬ ПО РАЗДЕЛАМ. Вы можете ограничить в wp_list_pages глубину показа вложенных страниц, см. параметр или .
Согласен с Вами. У меня блог состоит исключительно из статичных страниц (ни одной блоговой записи), что посоветуете?
Мне надо убрать простыню с сайдбара и разбить страницы по разделам.
Shtekker, я Вас не понимаю. Вы называете список страниц в боковой колонке меню, а потом говорите что вам надо эти страницы запихать в меню. И вообще список страниц
wp_list_pagesне имеет прямого отношения к иерархии шаблонов.Сам по себе они существуют в виде простыне в . Вот если бы можно было статичные страницы запихать в меню (прятать по ID не буду), как обычные записи.
Я ждал ответа от Вас Sonika именно по этому аспекту.
Надеюсь и жду Вашей помощи!
Shtekker, Страницы (статичные) не имеют отношения к категориям. Посты могут принадлежать одной или нескольким категориям, а Страницы существуют сами по себе. Насчет терминов: категория=рубрика.
Привет! Не совсем то, что я искал. Подскажите пожалуйста, как создавать категории, рубрики для статичных страниц блога, т.е. сам блог состоит исключительно из статичных страниц, в связи с этим появилась дилема как статичные страницы структуировать по теме рубрик и категорий.
Шаблон категории — для подкатегорий и постов...
Плагин use_parent_category_template позволяет использовать шаблон рубрики category-N.php для всех ее подрубрик. Модификация плагина use_parent_category_template_plus позво...