Страницы — это один из типов постов WordPress. По умолчанию все страницы выглядят одинаково, но средствами WordPress вы можете сделать страницы вашего сайта уникальными. Например создать страницу с картой, создать HTML-карту сайта, страницу с формой, лендинги и т.д. Всё это можно реализовать при помощи шаблонов страниц.
Кроме того, с версии WordPress 4.7 шаблоны поддерживаются всеми типами записей!
Также рекомендую мой видеокурс – Как создать тему для WordPress с нуля.
Если вы используете не свою собственную тему, а одну из стандартных тем WordPress или установленную из интернета, то вполне возможно, что эта тема имеет несколько уже готовых шаблонов страниц.
Для того, чтобы это проверить:
Либо, если у вас используется редактор Gutenberg, то опцию выбора шаблона вы сможете найти в настройках на вкладке «Страница» справа:
Если ваша тема не имеет ни одного шаблона страниц, то выпадающий список шаблонов просто будет отсутствовать.
Опции быстрого (Свойства, Quick Edit) и массового (Bulk Edit) редактирования также имеют возможность задавать шаблоны для страниц.
Также важно отметить, что один шаблон может использоваться для нескольких страниц одновременно.
Для того, чтобы добавить шаблон страницы WordPress, нужно сделать два шага:
misha123.php
.Файл шаблона также может располагаться в папке с родительской темой, папке с дочерней темой и, начиная с версии WP 3.4, в директории темы вы можете создать любую подпапку для шаблонов страниц./*
Template name: Мой Супер-шаблон
*/
Так тоже норм:
/* Template name: Мой Супер-шаблон */
Далее в шаблоне вы можете использовать абсолютно любой код, не хотите подключать get_header() и get_footer() сайта? — да пожалуйста, можете вообще просто один <iframe>
туда засунуть и будет норм.
Имейте ввиду, что если тему, которая стоит на вашем сайте, разрабатывали не вы, то после её обновления все ваши созданные шаблоны страниц могут исчезнут (сам не проверял, но официальная документация говорит, что да). Поэтому, для таких целей рекомендуется создавать дочерние темы, а уже в них — шаблоны страниц.
Кстати я уже писал про иерархию в одном из моих предыдущих постов и записывал видеоурок.
Список ниже показывает приоритет задействования PHP-шаблонов файлов темы для отображения типа записей «Страницы».
custom-template.php
(если файл шаблона существует и выставлен для данной страницы в её настройках)page-{ярлык страницы}.php
(если существует)page-{ID страницы}.php
(если существует)page.php
(наиболее распространённое решение практически во всех темах)singular.php
(если page.php не существует)index.php
(используется, если все вышеперечисленные файлы отсутствуют в папке с темой)Хотите лучше разбираться в иерархии шаблонов WordPress? – Рекомендую видеоурок.
Шаблоны для постов любого типа появились в версии WordPress 4.7. Мне нравится, как плавно и постепенно WordPress расширяет возможности, внедряя только то, что действительно необходимо 😊 🎉
Шаблон для типов постов (записи тоже сюда относятся) создаётся точно так же, как и для страниц, только помимо параметра Template name:
, нам ещё на следующей строке нужно указать параметр Template post type:
, в котором можно указать название типа поста, или несколько названий через запятую, например я захочу использовать свой шаблон и для записей и для страниц, в этом случае он будет начинаться так:
/*
Template name: Отдельный шаблон для записи
Template post type: post, page
*/
Если у вас уже был какой-то шаблон для страниц и он уже использовался на сайте, то, после того, как вы добавите туда параметр Template post type:
и укажите какой-то другой тип записей там, то уже существующие страницы, использующий этот шаблон не перестанут работать, однако при редактировании там уже будет указан Базовый шаблон.
А для соответствующего типа записи сразу появится возможность выбора шаблона в «Свойствах записи»:
В меню быстрого редактирования он тоже появится.
Окей, допустим вы используете шаблоны страниц и вам в вёрстке или в PHP-коде нужно сделать что-то особенное для этого шаблона. Как будем это делать?
Прежде всего давайте обратим внимание на функцию body_class(), которую я рекомендую использовать при разработке ваших тем. Да, по этой функции любой быстро определит, что сайт на WordPress, ну и что с того?
Зато эта функция очень удобна, в атрибуте class тега <body>
она выведет:
page
,page-id-{ID}
,page-template
, если используется произвольный шаблон страницы,page.php
, либо page-{ID}.php
, либо page-{ярлык}
.php, то будет добавлен класс page-template-default
.Пример:
<body class="page page-id-5 page-template-default">
Давайте разберёмся, как формируется название класса тега <body>
для произвольного шаблона страниц. Предположим мы создали шаблон digital-agency.php
и поместили его в папку page-templates
в нашей теме, ну типо как page-templates/digital-agency.php
. В отдельную директорию шаблон помещать не обязательно, кроме того, это стало возможно начиная с версии WordPress 3.4.
В итоге в классы будут добавлены:
page-template
– то, что используется произвольный шаблон страницы,page-template-page-templates
– page-template-{папка шаблона}
,page-template-digital-agency
– page-template-{название файла}
,page-template-page-templatesdigital-agency-php
– название файла шаблона с расширением и с названием папки, в которой он находится.Если же мы хотим проверить, используется ли определённый шаблон страницы внутри кода PHP, например у нас общий для всех страниц header.php
, то рекомендую использовать функцию is_page_template().
Для нашего примера условие будет выглядеть следующим образом:
if( is_page_template( 'page-templates/digital-agency.php' ) ){ // да, используется этот шаблон страницы }
Видеоурок:
Хотите лучше разбираться в шаблонах WordPress? Попробуйте пройти мой видеокурс по созданию шаблона (темы) на основе готовой HTML-вёрстки.
Еще раз прочитал и просто понимаю как все легко вы описываете и находите информацию по существу
Я так понимаю в любом случае лучше делать "дочки", мало ли что? Наверное многие сталкиваются с проблемами недоступности части контента или урезания функционала своих плагинов/надстроек после глобальных изменений. Как минимизировать потери?
Но на данный момент 4 апреля 2016 года грамотнее сначала сконфигурировать голый wp-template, если пишется тема под свои кастомные нужды?
я, например, начал пользоваться http://underscores.me.
Это хорошее решение или все-таки веб-разработчики полностью с нуля все создают?
Если тема в дальнейшем будет обновляться, то однозначно "дочки".
Разработчики чего только не мутят на самом деле. И с нуля, и на базовых темах и на на обычных темах. Но насколько знаю я, underscores — хорошее решение.