template_include хук-фільтрWP 3.0.0

Дозволяє змінити шлях до підібраного файлу шаблону відображення поточної сторінки, наприклад: single.php , page.php .

Спрацьовує перед підключенням вибраного файлу шаблону теми. Цей фільтр використовується для зміни шляху до файлу.

Фільтр спрацьовує після події template_redirect і після того, як WordPress підбере файл, який використовуватиметься як файл шаблону.

Під час цього фільтра можна використовувати умовні теги і змінна $post вже визначена.

Для кожного типу сторінки файл шаблону різний: див. Ієрархію файлів теми . Наприклад, ми зайшли на постійну сторінку, WordPress підбирає якийсь файл шаблону повинен бути показаний – це файл page.php : home/example.com/wp-content/themes/mytheme/page.php . За допомогою цього фільтра можна змінити шлях такого файлу.

Подібні хуки для роботи з файлом шаблону:

  • (type)_template_hierarchy – фільтрує масив назв файлів ієрархії, яким йтиме пошук потрібного файла. З WP 4.7.

  • (type)_template – фільтрує шлях до файлу шаблону, що вже визначився. Аналог template_include тільки спрацьовує трохи раніше.

Усі варіанти параметра type дивіться в однойменному параметрі $type функції get_query_template() .

Використання

add_filter( 'template_include', 'wp_kama_template_include_filter' );

/**
 * Function for `template_include` filter-hook.
 *
 * @param string $template Додаток до включення.
 *
 * @return string
 */
function wp_kama_template_include_filter( $template ){

	// Filter...
	return $template;
}
$template
(рядок)
Повний шлях до файлу, який буде підключений як шаблон. Пр:
home/example.com/wp-content/themes/publisher/page.php .

Приклади

2

#1 Фільтрtemplate_include

І третій спосіб створити окремий файл шаблону для сторінки з ярликом portfolio – це використовувати фільтр template_include:

add_filter( 'template_include', 'portfolio_page_template', 99);
function portfolio_page_template( $template ) {

	if( is_page('portfolio') ){

		$new_template = locate_template( array( 'portfolio-page-template.php' ) );

		if ($new_template) {
			$template = $new_template;
		}
	}

	return $template;
}

Такий спосіб може бути корисним при написанні плагінів або додатків шаблону. Коли потрібно просто створити сторінку з певним складом і все.

1

#2 Шаблон для всіх дочірніх сторінок

Допустимо у нас є шаблон сторінка і ця сторінка має дочірні сторінки (під сторінки). Давайте встановимо свій шаблон сторінки для цієї батьківської та всіх її дочірніх сторінок.

add_filter( 'template_include', 'wp_kama_template_include_filter' );

function wp_kama_template_include_filter( $template ) {

	$parent_page_id = 25;
	$post = get_queried_object();

	if( is_page( $parent_page_id ) || $parent_page_id === $post->post_parent ){
		return get_theme_file_path('templates/page-myname.php');
	}

	return $template;
}
0

#3 Файл у каталозі теми

Шаблон постійної сторінки можна задати створивши файл у каталозі теми та на початку файлу вказати PHP коментар:

<?php
/**
 * Template Name: Портфоліо
 */

Потім при створенні сторінки, у випадаючому списку потрібно вибрати створений шаблон

Файл теми з точною назвою

Або в темі створіть файл page-portfolio.php. У цьому випадку ярлик сторінки повинен дорівнювати “portfolio”.

0

#4 Як дізнатися, який файл шаблону використовується в даний момент

Для цього подивіться, що передається у фільтр template_include :

## Який шаблон використовується в даний момент
add_filter( 'template_include', 'echo_cur_tplfile', 99);
function echo_cur_tplfile( $template ){

	echo '<span style="color:red">'. wp_basename( $template ) .'</span>';

	return $template;
}

-1

#5 Підключення PHP функції як файл шаблону

Іноді зручно не створювати файл із кодом шаблону, а створити PHP функцію з кодом цього файлу. І щоб така функція відпрацювала як файл, її можна викликати в хуку template_include:

<?php
// Підключаємо шаблон сторінки
add_filter('template_include', 'book_archive_tpl_include');
function book_archive_tpl_include( $template ){
	if( ! is_post_type_archive('book') )
		return $template;

	book_archive_tpl();
}

// шаблон сторінки
function book_archive_tpl(){
	get_header();
	get_sidebar();
	?>

	<div>
		<h1>Заголовок</h1>
		<p>Якийсь текст</p>
	</div>

	<?php
	get_footer();
}

Потрібно знати!

Технічно це неправильне рішення, але воно працює! У цьому випадку фільтр використовується як подія. А оскільки цей фільтр викликається останнім серед фільтрів, що не належать до шаблону, то в момент його виклику можна вивести на екран потрібний нам код шаблону.

Взагалі не рекомендую використовувати цей спосіб. Але якщо не можна, але дуже хочеться, то можна…

список змін

З версії 3.0.0Введено.

Де викликається хук

Де використовується хук у WordPress

Використання не знайдено.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *