# Существует несколько способов создать шаблон страницы
Ролик: https://www.youtube.com/watch?v=RNFRCz0whuw&t=28s
## 1. Стандартный способ
### для ручного выбора шаблона на странице или записи
В директории темы создадим любой файл и в начале пропишем комментарий:
<?php
/*
* Template Name: Страница продукции
*/
?>
WP автоматически подхватит данный шаблон.
Если нужно разрешить данный шаблон для записей или кастомных типов
Нужно добавить:
<?php
/*
* Template Name: Страница продукции
* Template Post Type: page, post, product
*/
?>
## 2. На основе иерархии файлов и шаблонов
### Подходит для автоматического назначения шаблона, к примеру для главной или страницы контактов.
Необходимо создать файл **page-{слаг страницы}.php** или **page{ID страницы}.php**
Пример: **page-contact.php** или **page-12.php** или **page-about.php**
Недостатки:
* Шаблон создаётся только для одной - конкретной страницы
* Шаблон зависит от слага (URL) или ID страницы
* Шаблон должен быть только в корне темы
## 3. На основе фильтра 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;
}