get_page_template_slug()WP 3.4.0

Получает название специального шаблона записи (поста).

Получает название php файла, который установлен как шаблон для указанной записи (поста). Если шаблон для записи не установлен, получит пустую строку.

Название файла шаблона находится в метаполе _wp_page_template (таблицы wp_postmeta). Если файл шаблона страницы расположен в подкаталоге, то значение будет такое:

folder-name/file-name.php

Произвольные поля начинающиеся с "_" не отображаются в админ-панели в блоке "произвольные поля". Такие названия считаются служебными в WordPress. Поэтому в админ-панели вы не увидите поле хранящее файл шаблона.

Работает на основе: get_post(), get_post_meta()
Основа для: is_page_template()

Хуков нет.

Возвращает

Строку|false.

  • Строку - Название файла шаблона.
  • Пустую строку - когда для страницы не установлен никакой шаблон или его значение равно "default".
  • false - когда пост не найден.

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

$page_template_slug = get_page_template_slug( $post_id );
$post_id(число|WP_Post)
ID страницы или объект WP_Post страницы, которую нужно проверить. По умолчанию: текущая запись в цикле (глобальной переменной $post).
По умолчанию: null

Примеры

0

#1 Выведем название шаблона страницы 123

echo get_page_template_slug( 123 ); //> file-name.php

Или можно передать сразу объект WP_Post - так будет работать немного быстрее:

$post = get_post( 123 );

// где-то выше в коде мы уже получили объект,
// теперь просто передаем его
echo get_page_template_slug( $post );
0

#2 Получим все посты с указанным файлом шаблона

Если нужно найти (получить) все страницы, которые работают под определенным файлом шаблона, то можно сделать такой запрос:

$template_filename = 'templates/offers.php';

$pages_with_template_filename = get_pages( [
	'meta_key' => '_wp_page_template',
	'meta_value' => $template_filename
] );

Этот код вернет (array|false) список страниц, соответствующих имени шаблона страницы.

Часто бывает так, что внутри темы, которую вы создаете, вам нужно найти определенную страницу, которая работает под специальным пользовательским шаблоном, и что вам нужно динамически получить доступ к ее ID, содержимому, заголовку и т.д., такой код поможет сделать это.

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

С версии 3.4.0 Введена.
С версии 4.7.0 Now works with any post type, not just pages.

Код get_page_template_slug() WP 6.1.1

function get_page_template_slug( $post = null ) {
	$post = get_post( $post );

	if ( ! $post ) {
		return false;
	}

	$template = get_post_meta( $post->ID, '_wp_page_template', true );

	if ( ! $template || 'default' === $template ) {
		return '';
	}

	return $template;
}