WordPress как на ладони
Новые WordPress шаблоны Хостинг, VPS/VDS и отдельные сервера только на SSD дисках. 7 дней бесплатного тестирования.

is_page_template() WP 2.5

Проверяет используется ли для страницы файл шаблона. Можно указать название файла шаблона.

Можно проверить конкретное название файла шаблона, например about.php. Если этот файл используется для генерации страницы, то функция вернет true.

Не работает внутри цикла WordPress.

Если указывается название файла шаблона и при этом файл лежит во вложенной папке, то название вложеной папки тоже нужно указать:

is_page_template('templates/about.php')
✈ 1 раз = 0.00016с = быстро | 50000 раз = 2.95с = быстро

Хуков нет.

Возвращает

true или false.

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

if( is_page_template( $template ) ){
	// ...
}
$template(строка/массив)
Полное название файла шаблона (с расширением). С версии 4.2. можно указать несколько названий в массиве.
По умолчанию: нет

Примеры

#1. Проверим используется ли у страницы отдельный шаблон

Этот пример показывает, как проверить указан ли для текущей постоянной странице, отдельный файл шаблона для отображения её контента:

if ( is_page_template() ) {
	// отдельный шаблон используется
} else {
	// обычный вывод, без шаблонов
}

#2. Проверим используется ли файл about.php для отображения страницы

Если отображается страница шаблона "об авторе" (about), то мы может определить её по файлу который отвечает за вывод контента этой страницы. Допустим для этой страницы у нас создан отдельный файл шаблона about.php. Тогда код проверки будет выглядеть так:

if ( is_page_template('about.php') ) {
	// сработает если используется файл 'about.php'
} else {
	// сработает если 'about.php' не используется
}

#3. Несколько названий шаблонов для проверки

if( is_page_template( array('about.php', 'sitemap.php') ) ) {
	// используется один из шаблонов
} else {
	// обычный вывод, без шаблонов
}

Код is_page_template: wp-includes/post-template.php VER 4.9.8

<?php
function is_page_template( $template = '' ) {
	if ( ! is_singular() ) {
		return false;
	}

	$page_template = get_page_template_slug( get_queried_object_id() );

	if ( empty( $template ) )
		return (bool) $page_template;

	if ( $template == $page_template )
		return true;

	if ( is_array( $template ) ) {
		if ( ( in_array( 'default', $template, true ) && ! $page_template )
			|| in_array( $page_template, $template, true )
		) {
			return true;
		}
	}

	return ( 'default' === $template && ! $page_template );
}

Cвязанные функции

Из метки: Условные теги (типов страниц и запросов )

Еще из метки: Условные теги (все)

Еще из раздела: Подключение файлов темы

Еще из тегов шаблона: Основные

4 коммента
  • iconed

    Спасибо за сайт. Лучший.

    Вопрос по теме: есть ли стандартная процедура вывода названия данного шаблона, или надо перебирать список? Грубо говоря, на странице шаблона всегда есть комментарий

    // Template Name: template-name

    Есть ли возможность выяснить, как шаблон используется?

    С уважением smile

    1
    Ответить3.4 года назад #
    • Kama6918

      В статье 3 способа создать шаблон страницы в первом способе, в пункте "как это работает" описан принцип.

      • Чтобы вывести название текущего шаблона, который использует страницу нужно вывести метаполе записи : _wp_page_template.

      • Чтобы получить список всех используемых шаблонов, например, template-name. Нужно получить все метаполя _wp_page_template со значением "tpl-page.php", где tpl-page.php содержит в комментах строку // Template Name: template-name.

        Все метаполя со значением можно получить запросом в БД:

        global $wpdb;
        $page_ids = $wpdb->get_col("SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_wp_page_template' AND meta_value = 'tpl-page.php'");
        foreach( $page_ids as $page_id ){
        	echo get_post($page_id)->post_title .'<br>';
        }
      Ответить2.1 года назад #
  • Андрей

    Скажите, пожалуйста, можно ли добавить в тему какую-то отладочную функцию, чтобы узнавать, какой именно шаблон используется на конкретной странице? Спасибо!

    • campusboy3053 cайт: www.youtube.com/c/wpplus

      Привет. Я вместо кода использую плагин Query Monitor. Он много отладочной инфы показывает, в том числе и текущий шаблон, а также какие шаблоны искал движок, пока выбрал текущий.

      Если прям принципиально кодом надо, то стоит обратить внимание на функцию get_page_template_slug().

      1
Здравствуйте, !     Войти . Зарегистрироваться