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

  • 04.03.2020 15:27
  • 0
  • 281

Система 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)
Чтобы оставить комментарий, необходимо войти на сайт
Войти
Последние комментарии
Мостебт Партнерс предлагают очень хорошие ставки, так что даже небольшое количество трафика дает возможность зарабатывать. Я не гонюсь за огромными выплатами, 400 долларов в месяц вполне достаточно. Этого в первый месяц удалось достичь практически без усилий. Может буду чуть-чуть наращивать обороты, но пока и так все хорошо. Это как небольшой дополнительный заработок для меня. ДУмаю, что можно сделать и основным, если захотеть, так что советую всем.
Уже работал с разными партнерками, но считаю, что mostbet partners одна из самых адекватных в плане технической поддержки. она работает круглосуточно, и всегда готова помочь, Если какие-то проблемы, то сразу решаются все проблемы. Я обращался несколько раз, первый, когда настраивал все, а потом уже при первой выплате. Возникли вопросы по статистике, но все объяснили, показали, так что вопросов вообще не осталось.
На данный момент. среди множества ПП, не нашел для себя ни одной лучше, чем mostbet partners. Не знаю, с чем это связано, но условия здесь наиболее выгодные. Шейва не заметил, что очень радует. Холда даже на первых порах не было, деньги сразу выплачивали. Трафик в сфере гемблинга мне приносит довольно большой доход, который я теперь не хочу терять.
Пользователи