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.9

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;
}