Файлы темы WordPress (иерархия файлов шаблона)
В этом посте речь пойдет о том, какие бывают названия у файлов темы WordPress и за показ какой страницы на сайте отвечает каждый из них. Это очень важные, нужные, и в тоже время очень простые, для понимания, знания. Ими должен обладать каждый, кто работает с WordPress. Ниже полностью расписана структура файлов темы WordPress и порядок их подключения (иерархия).
Об иерархии файлов темы я упоминал в статье «Условные теги в WordPress». А ниже тоже самое, только подробнее и понятнее.
Подключения файлов темы (теория)
Иерархия, в данном случае последовательная проверка, говорит о том, что для вывода одной страницы на сайте, подходят несколько названий файлов. Проверка какой файл будет использован идет поочередно. Т.е. есть список файлов, каждый из них по очереди проверяется на физическое существование, как только найден существующий файл проверка прекращается и найденный файл используется в качестве шаблона.
Например, мы заходим на страницу рубрики «Плагины» с ярлыком
и id 25
— http://example.com/category/plugins
. Тогда для генерации кода этой страницы WordPress будет по очереди проверять наличие следующих файлов (проверка прервется на первом существующем файле):
category-plugins.php
category-25.php
category.php
archive.php
index.php
Полная схема для всех видов страниц и их файлов выглядит так:
Еще одна схема, возможно она понятнее (старая):
менюТипы страниц и названия файлов
Ниже список страниц и отвечающие за них файлы темы. В этом разделе расписана картинка иерархии файлов темы, которая немного выше.
Ниже указана страница сайта и соответствующий ей список PHP файлов. Такие файлы должны находится в корневой папке темы.
Записи
Страница (запись page)
Запись (запись post)
single-post-{ярлык_записи}.php
single-post.php
single.php
singular.php
index.php
Произвольный тип записи
{любое_название}.php
(для древовидного типа с поддержкой шаблонов. С WP 4.7)single-{post_type}-{ярлык_записи}.php
single-{post_type}.php
single.php
singular.php
index.php
Вложение
{начало_MIME_типа}.php
{конец_MIME_типа}.php
{начало_MIME_типа}-{конец_MIME_типа}.php
attachment.php
single-attachment-{ярлык_вложения}.php
(позволяет указать шаблон для отдельной картинки)single-attachment.php
single.php
singular.php
index.php
Под началом и концом MIME типа, имеется виду первая и последняя часть MIME типа, разделенная /
. Например, MIME-тип текстового файла: 'text/plain'
и значит будет проверяться наличие файл text.php, затем plain.php, затем text-plain.php.
Полный список MIME типов смотрите в описании get_allowed_mime_types().
менюАрхивы
Рубрика
category-{ярлык}.php
category-{id}.php
category.php
archive.php
paged.php
(если страница пагинации)index.php
Метка
tag-{ярлык}.php
tag-{id}.php
tag.php
archive.php
paged.php
(если страница пагинации)index.php
Таксономия
taxonomy-{ярлык_таксономии}-{ярлык_элемента}.php
taxonomy-{ярлык_таксономии}.php
taxonomy.php
archive.php
paged.php
(если страница пагинации)index.php
Страница архива типа записи
archive-{ярлык_типа_записи}.php
archive.php
paged.php
(если страница пагинации)index.php
Страница автора
author-{nickname}.php
author-{id}.php
author.php
archive.php
paged.php
(если страница пагинации)index.php
Страница архива по дате (день, месяц, год)
date.php
archive.php
paged.php
(если страница пагинации)
index.php
404 страница
Страница поиска
Главная страница
front-page.php
- (логика постоянных страниц, если для главной выбрана страница)
home.php
index.php
Страница блога
Страница блога появляется, когда для главной выбрана постоянная страница
Встраивания (embeds)
Шаблоны встраивания используются когда запрашивается запись через REST API. Встраивания появились в версии 4.5 и позволяют встраивать ваши записи в чужие сайты. См. get_post_embed_url()
embed-{post-type}-{post_format}.php
embed-{post-type}.php
embed.php
Чтобы изменить только контент встраивания, можно в теме создать файл embed-content.php
и описать там HTML. Оригинальный HTML находится в файле движка /wp-includes/theme-compat/embed-content.php
Как это работает
За всю логику: какой файл подключать, отвечает файл ядра wp-includes/template-loader.php. Если разобраться, в нем все описано. Но, это занятие не особо интересное, поэтому я его распишу.
Прежде всего. template-loader.php
подключается после того как загрузится вся среда WordPress. После того, как отработает файл wp-load.php
и обработается основной запрос — функция wp(). Т.е. template-loader.php
подключается в самом-самом конце PHP скрипта…
Сначала срабатывает хук template_redirect. В этом хуке можно произвести какие-то проверки и если надо перенаправить на другой URL. В нем нужно обрывать работу скрипта через die()
. Т.е. если этот хук что-то меняет, то на этом работа файла template-loader.php
должна закончиться и мы «улетаем» на какую-то другую страницу.
Дальше срабатывает никому не интересный хук exit_on_http_head
. Он позволяет сделать так, чтобы при HTTP HEAD
запросе что-либо выводилось на экран…
Дальше идут проверки по всем условным тегам где выясняется какой файл шаблона подходит под текущий запрос. Проверяется условный тег, затем еще один и еще… Как только один из условных тегов сработал, вызывается соответствующая функция, которая находит подходящий файл шаблона и возвращает путь до него. Все такие функции описаны в get_query_template().
Дальше — путь до файла темы определен! Теперь он прогоняется через фильтр template_include. Который позволяет нам изменить файл шаблона для текущего запроса.
Дальше, файл подключается в PHP и запускается визуальная часть генерации страницы.
менюФильтры
Иерархию файлов можно изменить через динамические фильтры:
(type)_template_hierarchy
— фильтрует массив названий файлов иерархии, по которому будет идти поиск нужного файла. С WP 4.7.(type)_template
— фильтрует путь до уже определившегося файла шаблона.
Все варианты параметра type
смотрите в одноименном параметр $type
функции get_query_template(). Вот они:
- index
- 404
- archive
- post_type_archive
- author
- category
- tag
- taxonomy
- date
- home
- frontpage
- page
- paged
- search
- single
- singular
- attachment
- comments_popup
Пример использования такого фильтра смотрите в ответе на этот вопрос.
менюДругие файлы темы
Файлы ниже также используются в теме, но они просто подключаемые и не участвуют в иерархии. Например файл sidebar.php
подключается в любом файле темы с помощью функции get_sidebar().
Список таких «подключаемых» файлов.
—
Источник
Как индивидуально оформить любую страницу Рубрики на WordPress
Рубрики в WordPress — это стандартная таксономия, которая позволяет группировать контент сайта по отдельным тематиками. По-умолчанию, все рубрики на сайте оформлены одинаково. Фоновое изображение, цвет фона, текст и так далее — все в одном стиле для всех рубрик.
Но что если на вашем сайте очень много контента и разных рубрик, и вы хотите визуально выделить какую-то отдельную рубрику? В WordPress это очень легко сделать, и в этом уроке мы покажем вам как.
Смотрите также:
Зачем оформлять Рубрики в WordPress по-разному?
Как мы сказали выше, большинство WordPress тем использует один и тот же шаблонный файл для каждой рубрики или архивной страницы. Это отчасти потому, что разработчики не в курсе того, как вы будете настраивать и использовать рубрики на своем сайте.
Но если на сайте много рубрик, то смена внешнего вида одной из них может значительно привлечь внимание посетителей, что пойдет на руку для вас и для них.
Например, если у вас новостной проект или сайт онлайн-журнала, вы можете индивидуально настроить показ рекламы для каждой отдельной рубрики.
Или если вы продаете товары для детей, вы можете выделить цветовое оформление для каждой рубрики, чтобы больше соответствовать товару.
Создаем отдельный файл шаблона для новой Рубрики
WordPress использует определенный файл шаблона для отображения ваших рубрик. Речь идет о конкретном PHP файле в вашей теме оформления.
Например, для отображения страницы рубрик используется файл category.php. Если такого файла в вашей теме нет, то тогда загружается файл archive.php.
Основной фокус тут заключается в том, что вы можете создавать дубликаты этих файлов для индивидуальных Рубрик.
Например, у вас есть рубрика с названием «Apple», и вы хотите сделать для нее другое оформление. Если за вывод рубрик в вашей теме оформления отвечает файл category.php, то вы можете создать его копию, назвав новый файл category-apple.php.
Если ваша рубрика называется «Shop», вам нужно назвать файл category-shop.php, думаю логика тут ясна.
Если имя вашей рубрики пишется по-русски, тогда нужно смотреть по ID номеру этой рубрики и называть файл как-то так: category-17.php, где 17 — это ID рубрики.
Просто подключитесь по FTP к вашему сайту, зайдите в каталог /wp-content/themes/ваша-тема/ скопируйте и переименуйте файл:
С этих пор за отображение рубрики «Apple» будет отвечать файл category-apple.php.
Теперь вы можете использовать любой редактор кода и изменить код этого файла любым образом, например, вы можете подключить другой сайдбар или отключить его вообще, использовать full-width макет для страницы и так далее.
Оформляем новый шаблон рубрики с помощью CSS
WordPress автоматически добавляет CSS классы для разных элементов по всему сайту.
Если вы перейдете на страницу вашей рубрики «Apple» и откроете режим Developer Tools в браузере (F12 в Chrome), то можно будет узнать имя класса для каждого элемента.
В нашем случае для рубрики «Apple» используется отдельный CSS класс category-apple:
После того, как мы узнали имя интересующего нас класса, мы можем добавить индивидуальное оформление этому классу в таблице CSS стилей style.css.
Например, мы использовали такой код, чтобы изменить цвета основных элементов страницы:
body.category-apple { background-color:#EEE; background:url("http://example.com/wp-content/uploads/2017/background.jpg") no-repeat fixed; color:#FFFFFF; } .category-apple .site { background:#232323; } .category-apple a { color:#CCCCCC; }
Не забудьте изменить имя для класса, если будете копировать наш код.
На этом все! В этом небольшом уроке мы показали, как создавать отдельные файлы шаблонов темы для отдельных рубрик и применять для них индивидуальное оформление с помощью CSS.
Источник: wpbeginner.com
Смотрите также:
Advanced Category Template — добавляем шаблоны для рубрик в WordPress
Версия плагина: 0.1
Версия WordPress: 4.7.2
Краткое описание
Плагин Advanced Category Template добавляет возможность выбора шаблона рубрики, аналогично шаблонам страниц и записей.
Использование
После установки и активации плагин добавляет выпадающий список шаблонов на страницы добавления и изменения рубрик. Данный список формируется автоматически, аналогично шаблонам страниц и записей, путем вставки в файл шаблона специального комментария с его названием.
/* * Category template: Тестовый */
/* * Category template: Тестовый */ |
Аналогичным образом можно добавить необходимое количество шаблонов рубрик.
Настройки
В разделе Advance Category Template можно отключить плагин, выбрать таксономии, для которых необходимо включить функцию выбора шаблона и восстановить настройки плагина по умолчанию.
Шаблоны WordPress | Рубрики | www.wordpress-abc.ru
По умолчанию, в коробочной версии CMS WordPress стоят три рабочих темы. Ими можно пользоваться. К счастью, лицензия WordPress позволяет любому разработчику верстать свои шаблоны. В этом обзоре я набрал их 43+. Плюс пишу, потому что постоянно добавляю интересных авторов. Здесь самые лучшие и вы можете скачать шаблон WordPress.
Читать дальше …
Одно из скрытых возможностей CMS WordPres, является довольно простое создание дочерней темы: темы которая сохраняет все пользовательские изменения в файлах шаблона при обновлении. О создании дочерней темы WordPress пойдет речь далее.
Читать дальше …
В этой статье я расскажу, как несколькими способами установить новые темы на свой блог WordPress, и посоветую несколько отличных сайтов с разнообразными бесплатными темами WordPress.
Читать дальше …
Продолжаю пополнять раздел «Шаблоны» интересными, пока бесплатными шаблонами, по моему мнению, заслуживающими внимание. В этом обзоре, Шаблон Ruby, пока не раскрученного автора. Может по этому, автор шаблона постарался и сделал отличный шаблон с таким количеством настроек, которых я давно не встречал. При этом «вес» шаблона не пострадал, и шаблон получился очень «живой» и быстрый.
Читать дальше …
Хотел сделать небольшую статью-мотиватор для CMS WordPress, а получился обзор сайтов «для ленивых», созданных при помощи CMS WordPress, на одной очень известной, можно сказать глобальной, платформе для создания сайтов.
Читать дальше …
Встретил шаблон WordPress, который порадовал быстротой, легкостью в сочетании с разнообразными настройками и строгим дизайном. Называется этот шаблон GeneratePress, основная версия бесплатная. Автор шаблона позиционирует его, как оптимизированный шаблон очень удобный в использовании. Проверим это утверждение в этой статье.
Читать дальше …
В этой статье познакомимся с одним из таких шаблонов, модульным шаблоном Market, с минималистичным дизайном, в светлых тонах и особым акцентом на показ фотографий.
Читать дальше …
Если вам нужна светлая тема WordPress, с настройками заголовка и меняющимися цветами фона, заголовка и ссылок, посмотрите на бесплатную тему Radiate от Themegrill.
Читать дальше …
Тема WordPress SG Window объемная, многофункциональная тема с возможностью настроить отдельно внешний вид страницы, главной страницы, страниц со статьями. Тема SG Window является родительской темой еще для шести дочерних тем этого автора. Именно эти объясняется её объемность и, к сожалению «тяжесть». Если вам нужен сайт с раздельными настройками внешнего всех типов контента и оригинальными эффектами показа картинок, эта тема для вас.
Читать дальше …
Шаблон или тема WordPress, задает внешний вид сайта, блога или магазина созданного с помощью CMS WordPress. Шаблон задает внешний вид сайта по задумкам автора шаблона. Автор определяет цвета шаблона, расположение виджетов и сайдбара, наполненность нижней и верхней части сайта. Большинство шаблонов WordPress открыты для редактирования, и вы можете менять и расположение виджетов, и цвета шаблона и фоновые изображения, а также делать другие изменения. Чтобы заниматься редактированием шаблона своего сайта, нужно не только знать основы HTML, PHP и CSS, но и как минимум, понимать, как построена структура темы WordPress. Этим и займемся в этой статье.
Читать дальше …
Шаблон вывода категорий | WordPress.org Русский
то открывается страница на которой ничего нет, кроме тайтла одного из новостей.
Очень похоже на то, что после вывода заголовка происходит какая-то ошибка php. Либо некорректно внесены изменения в шаблон, либо теме требуются какие-то доп. плагины, которые не установлены. Либо еще что-то. Стоит посмотреть лог ошибок php.
У меня шаблон верстался с нуля, с самой чистой с undersocores. Я настроил ссылки /category/news. По идее эта страница не нужна мне, зачем чтобы она дублировалась, я же могу просто сделать редирект ?
O(@perdyllo)
Я настроил ссылки /category/news. По идее эта страница не нужна мне,
Это страница вашей категории «news». Хотите вы того или нет, но таких страниц будет ровно столько, сколько у вас будет категорий (рубрик) в которых есть хотя бы одна запись. Таково устройство WP и эти страницы никоим образом вам не мешают, а наоборот помогают в построении сайта. Показывать их или нет — это уже другой вопрос и зависит от специфики вашего сайта и ваших идей.
Но в целях избежания дублей эти страницы категорий можно и нужно закрыть от индексации всеми возможными способами — в роботс текст, закрыть тегом «noindex», исключить их из xml карты сайта. Лучше всего всё это сделать сео плагинами.
И никаких переадресаций делать не надо чтобы не ломать структуру WP
Все тоже самое касается страниц тегов (меток), страниц-архивов по дате и страниц-архивов авторов.
O(@perdyllo)
Почти ОФТОП,
Вот что здесь http://manybtc.net
есть такого оригинально-эксклюзивного, уникально-неповторимого, ради чего надо было делать это
У меня шаблон верстался с нуля, с самой чистой с undersocores
вместо того, чтобы найти готовую не менее, а то и более «продвинутую» тему из оф. каталога и далее, без всяких танцев с бубном, начать работу над созданием сайта и заполнением его контентом?
- Ответ изменён 1 год, 10 месяцев назад пользователем O.
- Ответ изменён 1 год, 10 месяцев назад пользователем O.
- Ответ изменён 1 год, 10 месяцев назад пользователем O.
Зачем мне захламленный сайт непонятно каким функционалом, который мне не нужен вообще. Лучше сделать свою верстку, буду знать что и как, без всякого лишнего.
Модератор SeVlad(@sevlad)
wp.me/3YHjQ
без всякого лишнего.
..без защиты, без тестов, без соответствия требованиям/рекомендациям и тд 🙂
Такие не желатели иметь «лишнего» часто потом кричат по форумам — от «почему что-то не работает» до «помогите, взломали». К сожалению, помочь им дистанционное часто не представляется возможным.
(@perdyllo)
Зачем мне захламленный сайт непонятно каким функционалом
Если вы имеете в виду использовании темы из оф. каталога — то в этих словах ваше великое заблуждение и они, помимо этих ваших слов
Дело в том, что я еще не понимаю что должно открываться на этой странице
сразу выдают в вас дилетанта в WP, которому тем более не стоит лезть в самостоятельную верстку.
Вы похожи на человека, который в аэропорту бъет себя кулаком в грудь: «Дерьмо эти ваши самолеты! Я сейчас свой быстро построю и полечу!
Или по другому — горе от ума это называется
Такие не желатели иметь «лишнего» часто потом кричат по форумам — от «почему что-то не работает»
Сей топик — живой тому пример.
(@sevlad) Так тогда сайт был не на чистом, а на купленном за 50 баксов, и шаблон не защищает от всего, например тот случай с уязвимостью.
С другой стороны, я учусь wordpress’у когда самостоятельно делаю что-то, а что не знаю — спрашиваю. Если вам лень отвечать, то будьте добры, проходите мимо)
Модератор SeVlad(@sevlad)
wp.me/3YHjQ
Так тогда сайт был не на чистом, а на купленном за 50 баксов,
@kudanoff, так я разве говорил о том, что нужно покупать всякий хлам? Я давал ссылки на оф ресурс, а в оф каталоге всё бесплатное.
я учусь wordpress’у
Тем более! Тем более нужно пользоваться правильным компонентами. И учиться на них.
А вообще Вам начинать нужно с терминологии. Оч. облегчит взаимопонимание.
Если вам лень отвечать, то будьте добры, проходите мимо)
А воn попытки похамить отвечающим никому ещё не помогли решить свои проблемы.
Да, мне совершено не хочется выяснять ни что не так с вашей поделкой ни что и как Вы делали. А вот если бы Вы делали правильно — тогда бы было совсем другое дело.
А так я только счёл необходимым предупредить о возможных последствиях.
(@perdyllo)
на купленном за 50 баксов,
Здесь вы правы. Вот именно такие премиум темы (темы, а не шаблоны) и напичканы хрен знает чем. Вернее тем, о чем знает только их автор. И поэтому не надо бежать впереди паровоза, начиная знакомство с WP с платных премиум тем, или что еще хуже — с их ворованных вариантов, найденных на интернет-помойках
Я же говорю про «девственно чистые», не перегруженные ничем лишним бесплатные темы из оф. каталога WP https://ru.wordpress.org/themes/ А вы оказывается ничего и не знали о таком….
- Ответ изменён 1 год, 10 месяцев назад пользователем O.
А воn попытки похамить отвечающим никому ещё не помогли решить свои проблемы.
Не хотел конечно, прощу прощения.
Да, мне совершено не хочется выяснять ни что не так с вашей поделкой ни что и как Вы делали. А вот если бы Вы делали правильно — тогда бы было совсем другое дело.
Когда с чистой чистой темы где только самое необходимое для темы называется подделкой? Хмм.. По сути все правильно, не было багов, просто я не совсем хорошо знаю иерархию страниц и.т.д
Просто еще часто бывают темы с не нужным мне функционалом, скриптами и стилями, этот мусор чем вырезать с шаблона, легче бывает самому сделать так, как мне нужно/удобно. Разве я не прав?
O(@perdyllo)
Когда с чистой чистой темы где только самое необходимое для темы называется подделкой?
Во первых было сказано не подделка, а поделка. А это совершенно разные вещи.
просто я не совсем хорошо знаю иерархию страниц и.т.д
Вот поэтому вам и не надо заниматься самодеятельностью (поделками), а для начала разобраться со спецификой WP на одной из тем, идущих в комплекте с самим WP (из серии Twenty….) Нельзя изучать высшую математику, не зная таблицы умножения.
- Ответ изменён 1 год, 10 месяцев назад пользователем O.
- Ответ изменён 1 год, 10 месяцев назад пользователем O.
- Ответ изменён 1 год, 10 месяцев назад пользователем O.
- Ответ изменён 1 год, 10 месяцев назад пользователем O.
(@denisco)
WordPress-разработчик, wpcute.ru
Хочу спросить, если перейти по этой ссылке, то открывается страница на которой ничего нет, кроме тайтла одного из новостей.
Если там действительно возникает ошибка, то после включения WP_DEBUG в config.php, должно появиться сообщение с описанием причины ошибки.
Дело в том, что я еще не понимаю что должно открываться на этой странице
Это страница рубрики, на ней выводятся записи, привязанные к данной рубрики. В undersocores это уже реализовано, вероятно, что-то задели когда дорабатывали тему. Сравните свой код с оригиналом.
Спасибо за советы. Я уже начал читать документацию и уже понимаю что как.
Разные шаблоны для разных рубрик
O(@perdyllo)
Что в данном случае подразумевается под словом шаблон?
Например, у меня есть категория «Маркетинг», там на странице категории (рубрики) выводится листинг со статьями, и есть категория «Курсы валют», там таблицей выводятся курсы валют, но в варианте дизайна отличном от листинга статей. Имеются в виду разные шаблоны дизайна и вообще функционала для разных рубрик. Одна будет тянуться от файла archive.php, другая от своего файла, пока не знаю какого (ну или как-то так).
- Ответ изменён 8 месяцев, 3 недели назад пользователем romveld.
- Ответ изменён 8 месяцев, 3 недели назад пользователем romveld.
(@perdyllo)
Имеются в виду разные шаблоны дизайна и вообще функционала для разных рубрик.
Для начала советую ознакомиться с Иерархией шаблонов
https://developer.wordpress.org/themes/basics/template-hierarchy/
https://codex.wordpress.org/%D0%98%D0%B5%D1%80%D0%B0%D1%80%D1%85%D0%B8%D1%8F_%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D0%BE%D0%B2
Понял, спасибо за информацию! Буду изучать.
Шаблоны страницы для типов записей в WP 4.7
Поддержка шаблонов для постоянных страниц — записей типа page была неизменна аж 12 лет. И помогала разработчикам удобно создавать шаблоны для страниц, но была всегда ограничена только типом записи page
. Однако с версии WordPress 4.7 положение дел изменилось и теперь можно создавать шаблоны для абсолютно любых типов записей.
Шаблоны для записей типа page
О том как создавать шаблоны для записей я писал в отдельной статье и там не только этот способ, а еще два. Этот способ идет там первым. Напомню: чтобы создать шаблон постоянной страницы, нужно в корне темы создать файл с любым названием, например, my-template.php
и в нем указать php комментарий следующего вида:
<?php /* Template Name: Мой шаблон страницы */ ?> <!-- html код шаблона -->
Файл шаблона можно поместить и во вложенную папку в корне темы, WP все равно его найдет.
Дополнение из комментария. Например, в корне темы можно создать папку templates и все шаблоны складывать туда.
После этого на странице редактирования постоянной страницы в разделе «Свойства страницы» появится возможность выбрать этот шаблон.
Шаблоны для записей произвольного типа
С версии WordPress 4.7 функционал шаблонов страниц расширился. И теперь можно создавать шаблоны для страниц любого типа.
Чтобы указать, что создаваемый файл шаблона поддерживается типом записи, название этого типа записи нужно указать в заголовке: Template Post Type:. Несколько типов записей можно указать через запятую.
Для примера давайте создадим шаблон, который будет поддерживать три типа записи: post, page, product
. Для этого в начале файла добавим такой php комментарий:
<?php /* Template Name: Мой шаблон страницы Template Post Type: post, page, product */ // … остальной код шаблона
Теперь на страницах редактирования записей типов: post, page, product
, можно будет выбрать шаблон «Мой шаблон страницы».
Заметки разработчикам
Если хоть один шаблон существует для типа записи, то метабокс «Свойства страницы» (Post Attributes) появится автоматически на странице редактирования записи. Не обязательно включать поддержку
'page-attributes'
при регистрации типа записи.- Заголовок «Свойства страницы» можно изменить при регистрации типа записи в параметре
label > attributes
.