get_page_template_slug()
Отримує назву спеціального шаблону запису (поста).
Отримує назву php файлу, який встановлений як шаблон для зазначеного запису. Якщо шаблон для запису не встановлено, отримає пустий рядок.
Назва файлу шаблону знаходиться у метаполі _wp_page_template
(таблиці wp_postmeta). Якщо файл шаблону сторінки розташований у підкаталозі, значення буде таке:
folder-name/file-name.php
Довільні поля, що починаються з “_”, не відображаються в адмін-панелі в блоці “довільні поля”. Такі назви вважаються службовими у WordPress. Тому в адмін-панелі ви не побачите поле, що зберігає файл шаблону.
is_page_template()
Хуків немає.
Повертає
Строку|false
.
Строку
– Назва файлу шаблону.Пустую строку
– коли для сторінки не встановлено жодного шаблону або його значення дорівнює “default”.false
– коли піст не знайдено.
Використання
$page_template_slug = get_page_template_slug($post_id);
-
$post_id
(число | WP_Post) -
ID сторінки або об’єкт WP_Post сторінки, яку потрібно перевірити. За промовчанням: поточний запис у циклі (глобальної змінної $post).
Типово: null
Приклади
#1 Виведемо назву шаблону сторінки 123
echo get_page_template_slug(123); //> file-name.php
Або можна передати відразу об’єкт WP_Post – так працюватиме трохи швидше:
$post = get_post(123); // десь вище в коді ми вже отримали об'єкт, // Тепер просто передаємо його echo get_page_template_slug($post);
#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, немає just pages. |
Код get_page_template_slug() 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; }