Иерархия шаблонов в WordPress
[ ←Вернуться к стандартному виду ]
Перевод статьи Кодекса WordPress: Template Hierarchy. Перевод почти дословный, я старалась не отклоняться от оригинала:
Введение
Страницы сайта на WordPress собираются из файлов-шаблонов Темы подобно пазлу. Некоторые Шаблоны (например header.php и footer.php) задействованы на всех страницах, другие используются только при определенных условиях.
О чем эта статья
Эта статья дает ответ на вопрос:
Какие шаблоны используются для отображения того или иного типа страниц в WordPress?
Для кого эта статья
Со времен появления Тем в WordPress версии 1.5, Шаблоны становятся все более настраиваемы.
Перед тем, как создать свою Тему, Вам нужно понять механизм работы Шаблонов — почему WordPress использует разные файлы Темы для вывода того или иного контента в Вашем блоге. Эта статья призвана разъяснить, когда и как используется тот или иной Шаблон.
Условные теги (Conditional Tags) и иерархия ШаблоновWordPress может несколькими способами подбирать Шаблоны в соответствии с типом контента (query types). Разработчики Тем для WordPress могут также использовать «условные теги» (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
есть кое что интересное, изучим на днях
to Юля.
для работы с личными шаблонами страниц
первой строкой шаблона должна быть следующая:
где template_name - слуг и имя файла шаблона
шайтан! теги съел..
кодекс. pages.
вот оно.
Раздел \"Creating Your Own Page Templates\"
http://codex.wordpress.org/Pages
Sonika вопрос такой:подскажите как для страницы сделать подстраницу чтобы она на главной была не видна и далее у этой подстраницы было подолжение на следующею типа как у вас Стр. 1 из 5 1 2 3 4 5 » Может есть плагин?
Рома, ставьте тег
<!--nextpage-->
(в режиме КОД в виз. редакторе) и пост будет делиться на страницы, в шаблоне для одиночного поста должен быть также wp_link_pagesСпасибо с тегом разобрался.
скажите где редактировать исходные формы,если сайт на вордпрессе...где они там....а?
Лена, какие еще формы?
Ну, во-первых, спасибо огромное за весьма полезную статью! Она у меня уже давненько в избранном.
А во-вторых, вопрос:
А что с иерархией шаблонов в WP 2.7.1?
уменя почему-то не работают ни именованные шаблоны страниц, ни слаги...
Полезно, раньше примерно только знал, что если нет шаблона к рубрикам то архивный будет...
кароче можно одним файликом обойтись: index.php и файлом стилей, если очень надо))))
Я хочу сделать на главной странице свой собственный шаблон, а всю вункциональность блока оставить под раздел "Новости". Как это сделать не пойму!?
Классическая структура темы для WordPress, системы шаблонов (темы) очень популярны в cms, что не заставляет конечного пользователя баз знания html особо напрягатся при администрировании системы. Еще популярны штуки основанные на xml разметке, данных.
попробовал создать свой шаблон, сразу хочу сказать что не получилось ничего путного, проблема в том что когда я sidebar заганяю стилями влево, то справа в колонках при наведении мышки ссылки не отображаются, они отображаються только в одной определеной точке, то есть проводишь мышкой по записи(а запись это ссылка), то только в определенной точке можно кликнуть, убираю sidebar, всё нормально становиться ссылки кликаются везде по всему протяжении записи, не встречалась с такой проблемой ты раньше, и если нет то где можно почитать
http://forum.maxsite.org/viewtopic.php?id=5576
Евгений, Вам нужно создать или изменить страницу home.php
Где можно увидеть, узнать ID у рубрик?
Спасибо за познавательную статью по вордпрессу.
Вот не знал что так ещё можно делать, пойду пробовать.
А есть ли возможность сделать вывод постов в конкретной рубрике по конкретному шаблону? ну то есть, шаблон не для рубрики в целом а для страницы полной версии ее постов? пока не нашел как реализовать.
Человек из Симферополя, посмотрите этот плагин:
blog.portal.kharkov.ua/2008/07/19/use_parent_category_template/
Оно, спасибо большое, Sonika
Огромное спасибо за статью!)
Не первый год уже верстаю под вордпресс, теперь наконец-то разобрался, как он корректно выводит иерархию шаблонов))
Cпасибо за полезнейший пост
Пользуясь случаем скажу спасибо, хоть и несколько лет назад прочитал это здесь :)
Sonika, схему Иерархия шаблонов Темы - уже пора поменять. Для точности изложения.
Кому: Сергей #75
Ваш шаблон category-5.php - для просмотра ЛЕНТЫ постов, т.е. не ОДНОЙ записи, а многих.
ОДНА запись выводится по шаблону файла single.php.
Как сделать разными? Наверное, делать дополнительную проверку на ИД категории в single.php.
Сергею: Для начинающих - лучше поставить плагин Single Post Template
Спасибо за интересные полезности. Напишите пожалуйста мне если сможете взяться за доработку шаблона на вордпрессе.
Спасибо за статью, помогла во многом разобратся. Но по ходу понимания возник вопрос. У меня есть несколько категорий со смоими шаблонами, каждая категория имеет несколько дочерних. Вопрос состоит в том, как организовать вывод дочерних категорий в шаблон материнской.
Есть cat-1, со своим шаблоном, есть дочернии cat-2, cat-3, как сделать чтобы cat-2 и cat-3 выводились в шаблон cat-1
Заранее благодарен.
Подскажите, пожалуйста, а как отредактировать шаблон вывода комментариев?
Sonika, привет!
Спасибо за ваши усилия.
Вас, должно быть, уже утомили вопросы вокруг home и index, но я таки дерзну и докину ещё один ) Ситуация: нужен отдельный шаблон для первой страницы многостраничного листинга записей. Использую home.php, ставлю wp-paginate, рассчитываю, что со второй страницы (и так далее) в игру вступит index.php, но на деле остаюсь в шаблоне главной. Проверка is_home внутри home.php, конечно, всегда положительна.
Правильнее ли для такой задачи всё размещать внутри index.php или как-то ещё? Спасибо!
Плиз хелп!! Почему-то не отрабатывается category-id.php. Т.е. я создаю шаблон category-3.php для отображения страницы 3 категории, но категория отображается по шаблону category.php. Пробовал также category-slug.php - тоже самое. Также пробовал на другом шаблоне - тоже самое. Как думаете в чем может быть проблема? Использую WordPress 2.8.6. Заранее спасибо )
Очень полезный сайт.Только всё мудрёно,надо разбираться.
"..Почему-то не отрабатывается category-id.php.."
читать тут
http://blog.portal.kharkov.ua/2008/07/19/use_parent_category_template/
Полезная информация, В будущем думаю заняться созданием собственных тем, пригодится сайт). Спасибо автору.
Здравствуйте. Как с Вами связаться по поводу создания wordpress темы?
Нужна сложная тема-конструктор.
Если заинтересуетесь - пишите.
Для раздела видео хочу сделать чють другой шаблон, не пойму как это сделать :(
Пробовала сделать отдельные шаблоны страниц для сайта http://alina-krishtal.ru/. Не получилось нормального отображения того, что хотелось бы там видеть. Возможно ли, что какие-то элементы шаблонов могут блокировать отображаемость элементов в других шаблонах этой же темы?
Спасибо за статью! А то в инете везде только урывками удается найти информацию по файлам шаблона. А тут у вас все вместе и ссылки для отдельных файлов есть. Тоже очень удобно!
Только посте вашего поста я поняла иерархию шаблона вордпресс)) спасибо большое!
Замечательная статья, спасибо
Нужно только подправить, что для статической страницы по короткой ссылке шаблон должен называться не about.php а page-about.php потому что первый вариант не работает.
Один шаблон не сложно настроить а вот если несколько шаблонов использовать на сайте то можно запутаться
[...] внимание на перевод Ñтатьи Ð˜ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð² Темы WordPress (оригинал, англ. Ñз.), Ñто теÑно переплетенные между [...]
[...] Ð˜ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð² WordPress — рекомендуетÑÑ Ðº ознакомлению вÑем, кто ÑобралÑÑ ÐºÑƒÑ€Ð¾Ñ‡Ð¸Ñ‚ÑŒ Тему, а ниже мы Ñтим как раз и займемÑÑ :) ЕÑли кратко, то за вывод одиночной запиÑи отвечает шаблон single.php, а за вывод Ñтраницы — page.php [...]
[...] Загружаем conf.ini в папку плагина rc-custom-field-gui. Ð’Ñе готово, Ñ‡ÐµÐºÐ±Ð¾ÐºÑ Ð½Ð° меÑте, оÑталоÑÑŒ чуть модифицировать код главной Ñтраницы. За вывод запиÑей на главной отвечает файл-шаблон home.php или index.php (завиÑит от вашей Темы, подробнее читайте тут о иерархии шаблонов). [...]