WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

(type)_template_hierarchy хук-фильтр . WP 4.7.0

Позволяет изменить список php файлов иерархии шаблона для текущей страницы (текущего запроса).

Ищем WP-разработчика! Фулл-тайм, удаленка, хорошая зарплата, соц. пакет. Подробности.
Компания Boosta.

Это динамический хук в котором (type) может быть одним из:

  • indexindex_template_hierarchy.
  • 404404_template_hierarchy.
  • archivearchive_template_hierarchy.
  • authorauthor_template_hierarchy.
  • categorycategory_template_hierarchy.
  • tagtag_template_hierarchy.
  • taxonomytaxonomy_template_hierarchy.
  • datedate_template_hierarchy.
  • embedembed_template_hierarchy.
  • homehome_template_hierarchy.
  • frontpagefrontpage_template_hierarchy.
  • privacypolicyprivacypolicy_template_hierarchy.
  • pagepage_template_hierarchy.
  • pagedpaged_template_hierarchy.
  • searchsearch_template_hierarchy.
  • singlesingle_template_hierarchy.
  • singularsingular_template_hierarchy.
  • attachmentattachment_template_hierarchy.

Последний элемент в массиве всегда должен быть дефолтный файл шаблона. Для постоянных страниц например это page.php, для записей single.php и т.д.

Смотрите по теме: Иерархия файлов темы.

Использование

add_filter( '(type)_template_hierarchy', 'filter_function_name_6928' );
function filter_function_name_6928( $templates ){
	// filter...

	return $templates;
}
$templates(массив)

Список файлов шаблона в порядке их использования. Будет использован первый существующий файл из списка.

Список представляет собой массив в каждом элементе которого путь до файла относительно темы. Например для запроса к записи типа page массив будет такой:

Array(
	[0] => page-contacts.php
	[1] => page-25.php
	[2] => page.php
)

Примеры

#1 Добавим свой файл шаблона в иерархию

Допустим у нас в теме есть папка tpl в которой лежат файлы шаблона. Нам нужно для страниц с ярлыками my-page и your-page указать отдельный файл шаблона some-page.php из этой папки tpl. Для этого используем такой код:

add_filter( 'page'.'_template_hierarchy', function( $templates ){

	$cur_name = str_replace( [ 'page-', '.php' ], '', $templates[0] );

	$page_names = [ 'my-page', 'your-page' ];

	if( in_array( $cur_name, $page_names, 1 ) ){
		array_unshift( $templates, 'tpl/some-page.php' );
	}

	return $templates;
} );

Теперь в самом начале иерархии файлов темы для записей типа page, будет находится файл tpl/some-page.php и если он есть в теме, он будет использоваться в качестве файла шаблона для текущей страниц.

Список изменений

С версии 4.7.0 Введена.

Где вызывается хук

get_query_template()
(type)_template_hierarchy
wp-includes/template.php 62
$templates = apply_filters( "{$type}_template_hierarchy", $templates );

Где используется хук в ядре WordPress

Использование не найдено.
campusboy 3920youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Редакторы: Kama 8480
Комментариев нет
    Войти