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.0Now works with any post type, немає just pages.

Код get_page_template_slug() WP 6.0.2

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

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

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