Три способа создания шаблона страниц в WordPress
В этой статье мы рассмотрим способы создания шаблонов для страниц в WordPress. У каждого метода есть свои плюсы и минусы. Прежде чем начать, давайте разберёмся в значении термина «страница» и его отличии от «поста».
Понимание страниц и постов в WordPress
WordPress позволяет создавать как страницы, так и посты. Основное различие между ними в том, что посты отображаются на главной странице и могут иметь категорию, тогда как страницы имеют иерархическую структуру.
Примеры страниц:
- О мне
- Контакты
- Карта сайта
Страницы не зависят от времени публикации, в то время как посты организованы по дате. Например, эта статья является постом в категории «Codex». Ссылки в верхней части страницы ведут на страницы: Функции, Хуки.
Сравнение страниц и постов
- Страницы являются иерархическими, то есть могут иметь родительские и дочерние страницы.
- Посты группируются по категориям и меткам.
WordPress также позволяет создавать дополнительные типы постов, которые могут быть иерархическими или нет.
Часто, когда вам нужно изменить оформление поста, вы создаёте отдельный шаблон страницы. При создании шаблона вы можете полностью изменить внешний вид страницы, например, удалить заголовок, подвал и боковую панель.
Содержание статьи
- Первый способ: создание шаблона страницы с помощью файла с индивидуальным именем и выбор его в административной панели для конкретной страницы.
- Второй способ: шаблон страницы по файлу с заданным именем (или иерархия файлов шаблонов).
- Третий способ: программный подход — шаблон страницы через фильтр «template_include».
Первый способ: создание шаблона страницы с кастомным именем
Это наиболее распространённый метод создания шаблона страницы в WordPress. Вам нужно создать файл с расширением .php (например, tpl_my-page.php) в папке темы и в начале файла добавить комментарий-метаданные, указывающий, что это файл шаблона страницы:
Теперь, создавая или редактируя страницу в административной панели, вы можете выбрать этот шаблон в разделе «Атрибуты страницы».
С версии WordPress 4.7 вы можете создавать такие шаблоны для любого типа постов, добавив следующую строку к комментариям:
/*
Template Name: Мой шаблон страницы
Template Post Type: post, page
*/
Преимущества:
- Можно применить шаблон многим страницам. Например, вы можете создать шаблон без боковой панели и использовать его на разных страницах.
- Можете фильтровать страницы по конкретному шаблону.
Недостатки:
- После создания файла шаблона нужно зайти в административную панель, чтобы выбрать его для страниц, что может быть неудобно.
Как это работает:
Когда вы редактируете или создаёте новую страницу в админке, WordPress ищет все файлы шаблонов, содержащие строку Template Name
в комментарии. Все найденные файлы отображаются в меню выбора шаблона в блоке «Атрибуты страницы».
Второй способ: шаблон страницы по специальному имени
Этот метод подразумевает создание файла шаблона с заданным именем в папке темы: page-{slug}.php или page-{ID}.php.
Как это сделать:
Сначала установите слаг страницы (альтернативное имя), используемое в URL, и создайте файл в папке темы с именем, соответствующим вашему слагу. Например, если слаг ваш��й страницы «contacts», создайте файл page-contacts.php
и добавьте необходимый код.
Преимущества:
- Нет необходимости заходить в админку и вручную указывать файл шаблона. Шаблон начинает работать сразу после создания.
Недостатки:
- Шаблон работает только для одной, выбранной страницы, и зависит от слага. Если вы измените слаг, шаблон перестанет работать.
Как это работает:
WordPress выбирает, какой файл шаблона использовать, в следующей последовательности:
- {any_name}.php (если используется шаблон страницы)
- page-{post_slug}.php
- page-{post_id}.php
- page.php
- singular.php
- index.php
Третий способ: шаблон страницы через фильтр «template_include»
Этот метод более сложный, но предоставляет больше возможностей для кастомизации. С его помощью вы можете применять шаблон к любой странице, посту, категории и другим публикациям на вашем сайте.
Пример кода:
add_filter( 'template_include', 'my_template' );
function my_template( $template ) {
// Шаблон для страницы с слагом 'portfolio'
if( is_page('portfolio') ){
if ( $new_template = locate_template( array( 'page-portfolio.php' ) ) )
return $new_template ;
}
// Шаблон для категории
if( is_category( array( 9, 'No category', 'php') ) ){
return get_stylesheet_directory() . '/tpl_special-cats.php';
}
// Шаблон для поста по ID
global $post;
if( $post->ID == 12 ){
return wp_normalize_path( WP_PLUGIN_DIR ) . '/my-plugin/site-template.php';
}
return $template;
}
Код необходимо разместить в файле functions.php
вашей темы или в плагине.
Преимущества:
- Можете применять шаблон к любым страницам или группе страниц.
Недостатки:
- Необходимо писать код.
Как это работает:
Смотрите описание фильтра template_include
для более детального понимания.
Теперь вы знаете три способа создания шаблонов страниц в WordPress! Выберите тот, который подходит именно вам, и настраивайте свои страницы под свои нужды.