Как создавать отдельные шаблоны для страниц в WordPress

  • 04.03.2020 15:27
  • 0
  • 164

Система WordPress является очень гибкой и легко позволяет реализовать любые дизайнерские прихоти. К примеру, если возникла необходимость назначить отдельным страницам свои шаблоны оформления, это легко можно реализовать. Причем для осуществления задуманного есть аж три способа.

В сегодняшнем материале мы разберем их все:

  1. Создание шаблона через подключение его в админке и с произвольным названием страницы (шаблон можно будет выбрать при публикации или редактировании статьи)
  2. Через файл с конкретным названием
  3. Через фильтр template_include (самый продвинутый)

Создание шаблона через подключение его в админке и с произвольным названием страницы

Смысл метода в том, что при выводе страницы Вордпресс формирует список файлов, которые содержат в себе специальный код. Таким образом, если создать отдельный файл, в котором прописать код, то шаблон появится в списке при редактировании страницы.

wordpress свой шаблон для страницы

Директива Template Post Type отвечает за то, в каких таксономиях (типах страниц) будет доступен к установке созданный шаблон.

Как видите, я создал шаблон с название «Мой шаблон страницы. И теперь, при редактировании страницы, могу выбрать его. Если это сделать, отображение документа будет выполняться в соответствии с кодом, прописанным в шаблоне.

wordpress свой шаблон для страницы

Такой подход является наиболее распространенным и имеет ряд преимуществ:

  1. Один раз создав шаблон, можно применять его сколько угодно к любым типам страниц.
  2. Можно вывести в отдельной категории только те страницы, которые работают на этом шаблоне.

В целом, я могу сделать отдельный шаблон для каждой рубрики своего блога и выбирать соответствующий набор инструкций при публикации поста.

Создание шаблона через файл с конкретным названием

Этот метод менее универсален, и подходит в тех случаях, когда требуется поменять шаблон вывода определенной страницы.

К примеру, если создать файл с именем page-about.php, и применить в нем измененный код, то страница с адресом site.ru/about будет выводиться в соответствии с ним.

А если нужно сделать такую манипуляцию с записью, то достаточно сделать файл single-about.php. В таком случае запись с адресом site.ru/about будет иметь измененный в соответствии с шаблоном внешний вид.

Данный способ позволяет создать разные шаблоны хоть для каждой страницы на сайте.

Также можно привязываться в ID постов, страниц. Это позволит альтернативному шаблону работать даже в том случае, когда адрес страницы был изменен.

К примеру, файл page-12.php будет работать со страницей с ID 12 вне зависимости от ее слага (адреса).

Метод имеет ряд недостатков:

  • При большом количестве шаблонов, в них легко запутаться
  • Если использовать в именах файлов слаги страниц, шаблоны перестают работать при смене адреса (slug).
  • Если перейти на ID, то при большом количестве шаблонов будет непонятно, какой из них за какую страницу отвечает.

Любые файлы, которые создаются первым или вторым способом должны храниться в корне папки темы.

Создание шаблона через фильтр template_include

Последний способ является самым продвинутым и трудным в реализации. Но, вместе с тем, дает наиболее широкие возможности по кастомизации записей, страниц.

Ниже представлен код, который я при необходимости использую для решения подобных задач:


// фильтр передает переменную $template - путь до файла шаблона.
// Изменяя этот путь мы изменяем файл шаблона.
add_filter('template_include', 'my_template');
function my_template( $template ) {

# аналог второго способа
// если это страница со слагом portfolio, используем файл шаблона page-portfolio.php
// используем условный тег is_page()
if( is_page('portfolio') ){
if ( $new_template = locate_template( array( 'page-portfolio.php' ) ) )
return $new_template ;
}

# шаблон для группы рубрик
// этот пример будет использовать файл из папки темы tpl_special-cats.php,
// как шаблон для рубрик с ID 9, названием "Без рубрики" и слагом "php"
if( is_category( array( 9, 'Без рубрики', 'php') ) ){
return get_stylesheet_directory() . '/tpl_special-cats.php';
}

# шаблон для записи по ID
// файл шаблона расположен в папке плагина /my-plugin/site-template.php
global $post;
if( $post->ID == 12 ){
return wp_normalize_path( WP_PLUGIN_DIR ) . '/my-plugin/site-template.php';
}

# шаблон для страниц произвольного типа "book"
// предполагается, что файл шаблона book-tpl.php лежит в папке темы
global $post;
if( $post->post_type == 'book' ){
return get_stylesheet_directory() . '/book-tpl.php';
}

return $template;

}

Размещать его нужно в файл functions.php Вашей темы. Кстати, подобным методом работают встроенные в ВП шаблоны (single, page, search, 404). Только наш код меняет пути шаблонов по заданным условиям.

К примеру, если в адресе записи имеется слово book, будет использован отдельный шаблон, прописанный в файле book-tpl.php.

Если разобраться более подробно, можно создавать огромное количество всяческих фильтров, в зависимости от нужд заказчика. Это, фактически, открывает безграничные возможности по кастомизации внешнего вида страниц.

К примеру, на одном из своих обзорников казино, я применил такую технологию. На обычным страницах у меня настроен вывод текста. А на страницах с обзорами казино (в слаге есть слово casino) – отдельный шаблон, в котором я максимально удобно для юзера привожу всю информацию.

Подключение отдельных header и footer

Можно пойти еще дальше и подключать к разным шаблонам отдельные файлы header.php и footer.php. Как это сделать?

Допустим, у нас есть задача на страницах блога выводить другой хедер, в котором будут заданы контакты для заказа услуг.

  1. Создаем файл header-blog.php.
  2. В нужном шаблоне, который будет отвечать за выводи блога (категории и записи) вверху подключаем вместо стандартного хедера альтернативный:

Меняем код:

wordpress свой шаблон для страницы

На:

wordpress свой шаблон для страницы

Есть и другой метод реализовать задуманное:
wordpress свой шаблон для страницы

Аналогично поступаем с любой другой частью сайта (футер, сайдбар и т.д.).

С первого взгляда все это кажется сложным. Но, разобравшись, Вы поймете, насколько это все логично, и какие возможности перед Вами открываются.

Комментарии (0)
Чтобы оставить комментарий, необходимо войти на сайт
Войти
Последние комментарии
Big Affiliate
Привет. Шаблон довольно старый, возможно он уже не совместим с текущими версиями вордпресса.
Выбрал для себя на Mostbet Partners гибридную схему. Мало кто сегодня предлагает такое преимущество. Считаю, что CPA+RS дает максимальный выхлоп. Выгода очевидна, если действовать с умом. ПП предлагает хорошее гео и минималку на вывод от 50 баксов.
Привет. Установила шаблон BCL но он не заработал, на сайте ни чего не отображается. Я в этом деле новичок, вы могли бы помочь разобраться
Пользователи