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

Click here to view original web page at wp-kama.ru

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

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

  • index — index_template_hierarchy.
  • 404 — 404_template_hierarchy.
  • archive — archive_template_hierarchy.
  • author — author_template_hierarchy.
  • category — category_template_hierarchy.
  • tag — tag_template_hierarchy.
  • taxonomy — taxonomy_template_hierarchy.
  • date — date_template_hierarchy.
  • embed — embed_template_hierarchy.
  • home — home_template_hierarchy.
  • frontpage — frontpage_template_hierarchy.
  • privacypolicy — privacypolicy_template_hierarchy.
  • page — page_template_hierarchy.
  • paged — paged_template_hierarchy.
  • search — search_template_hierarchy.
  • single — single_template_hierarchy.
  • singular — singular_template_hierarchy.
  • attachment — attachment_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 массив будет такой:

Примеры

#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 и если он есть в теме, он будет использоваться в качестве файла шаблона для текущей страниц.

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

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

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

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