Тут конечно офигенный контент, однако если вам вдруг захочется больше практики.
Редактировали какие-нибудь готовые темы для WordPress? Наверное заметили, что в каждой своя структура файлов.
Например в одной из них за вывод рубрик отвечает category.php
, а в другой это archive.php
, в третьей вообще отсутствуют оба. Почему так?
Это потому, что существует порядок, следуя которому WordPress, в зависимости от текущей страницы сайта, ищет соответствующие файлы в директории темы и, если они существуют — подключает.
Этот пост должен раз и навсегда ответить на вопрос — какой из PHP-файлов темы используется для отображения той или иной страницы сайта?
Условные теги — это функции, которые позволяют определить что-либо и дать однозначный ответ (логическое true
или false
). «Условные» потому что практически всегда используются внутри условия if
.
К примеру, функция is_single() позволяет определить, находимся ли мы, просматривая сайт в данный момент, на странице поста.
if( is_single() ) {}
Полный список условных тегов WordPress и их документацию вы найдёте здесь.
На некоторых схемах ниже, для того, чтобы обозначить, для какого типа страницы используются определенные файлы, я как раз таки задействовал условные теги.
Кликните по картинке, чтобы открыть в полном размере.
На графике показан порядок, по которому WordPress запрашивает файлы. Есть и альтернативные варианты этой схемы, чуть более старые или урезанные, но рабочие, вот первый, а вот второй.
А теперь разберемся, что означает каждая переменная (на графике — со знаком $).
Предположим, что во вложении у нас картинка PNG, то есть image/png
— для данного примера переменные принимают значения image
= $mimetype, png
= $subtype, image-png
= $mimetype-$subtype, по приоритету — в перечисленном порядке, как на схеме.
Сразу же приведу пример для страницы с рубрикой с ID = 54
и ярлыком myphotos
:
category-myphotos.php
в первую очередь WordPress ищет этот файл в папке с темой, если его не существует, то файл со следующего пункта списка,category-54.php
если и этого файла нет в директории темы, то переходим к следующему пункту и так далее,category.php
,archive.php
,index.php
;Следующий момент, который может быть не до конца понятен, отображён на этой части схемы:
Для страниц добавлен блок с условием «Используется ли шаблон страницы», а для записей и других типов постов — нет. На самом деле начиная с версии WordPress 4.7 можно использовать шаблоны страниц и для записей других типов, на этой схеме это тоже показано — custom.php
это и есть произвольный шаблон, просто для страниц и других типов постов эта часть схемы немного отличается, хотя суть одна и та же.
Уверен, что этот вопрос терзает многих, как когда-то терзал меня, особенно, если вы начали своё обучение WordPress не с теории, а с практики (я имею ввиду разбор и доработка уже готовых тем). Дело в том, что в таких темах может присутствовать либо home.php
, либо front-page.php
, либо вообще ни того и ни другого файла, index.php
же присутствует всегда.
Разберем сам порядок. Сначала на схеме:
Комментирую — итак, когда мы находимся на главной странице, в первую очередь WordPress пытается подключить файл front-page.php
, если же файла не существует, вторым шагом он проверяет, что указано в настройках Настройки > Чтение, короче говоря:
home.php
, в случае его отсутствия — index.php
,Но файл front-page.php
в любом случае остаётся в приоритете!
Спасибо за статью. Все стало ясно. Как новичок, не мог понять разницу между home страницей и front-page. Теперь все стало на места.
Интересует вообще необходимость archive.php.
У меня для кастомного типа записи (name2) есть стандартный набор файлов: page-name1, single-name2, content-name2, archive-name2.
В page-name1 прописано оформление новой страницы и цикл вывода записей.
В файле архива тоже есть структура с циклом по аналогии с базовым файлов archive.php.
Зачем и там и там делать циклы не догоняю.
Зачем нужен файл архива?
Если его удалить, то ничего не меняется на сайте.
Мне кажется в моем случае он или не используется или где-то у меня что-то не так организовано в структуре файлов.
Если ничего не меняется, удаляйте.
"Этот пост должен раз и навсегда ответить на вопрос — какой из PHP-файлов темы используется для отображения той или иной страницы сайта?"
-------------
Этот пост вообще очень мало, что разъясняет.
Всё очень кратко и путано, в основном про главную страницу.
Про шаблоны страниц - ничего не сказано, про архивы тоже.
Мне очень жаль, что этот материал недостаточно легкий для Вас.
Кстати, если вы видите, что слово выделено синим – это значит гиперссылка, а точнее переход к другой странице, где более подробно написано о том, что выделено синим цветом. Например, если кликнуть на синий текст "шаблоны страниц", то ваш компьютер автоматически перенаправит вас на другую страницу, на которой будет подробнее как раз про шаблоны страниц.
Если будут ещё вопросы, не стесняйтесь, задавайте в комментариях. К сожалению при написании постов я не могу учесть навыки и технические уровни всех людей, которые читают мой сайт, поэтому ориентируюсь на большинство. Но когда у кого-то трудности, стараюсь помогать в комментариях.