## Функция GET_PAGE_TEMPLATE_SLUG() │ WP 3.4.0
Эта функция позволяет получить имя шаблона для заданного поста в WordPress. Она возвращает имя PHP-файла, который установлен в качестве шаблона для выбранного поста. Если шаблон для поста не установлен, функция вернет пустую строку.
Имя файла шаблона хранится в пол�� _wp_page_template таблицы wp_postmeta. Если файл шаблона находится в подпапке, имя будет записано в следующем формате:
folder-name/file-name.php
Не забудьте, что пользовательские поля, начинающиеся с символа "_", не отображаются в админ-панели в блоке "пользовательские поля". Такие названия считаются служебными в WordPress. Поэтому в админке вы не увидите поле, которое хранит файл шаблона поста.
### Использует:
- get_post()
- get_post_meta()
### Используется в:
- is_page_template()
### Возврат
Функция возвращает одно из следующих значений:
- **string** — имя файла шаблона.
- **пустая строка** — если шаблон не установлен для страницы или его значение равно "default".
- **false** — если пост не найден.
### Синтаксис
```php
get_page_template_slug( $post );
- $post (int|WP_Post) — ID поста или объект WP_Post.
- По умолчанию: глобальная переменная
$post
Примеры
Пример 1: Получить имя шаблона для страницы с ID 123
echo get_page_template_slug( 123 ); // Выводит: file-name.php
Вы также можете передать объект WP_Post, это немного ускорит выполнение:
$post = get_post( 123 );
// Передаем объект $post
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
] );
Этот код вернет массив (или false), содержащий список страниц, соответствующих имени шаблона. Часто в процессе разработки темы вам нужно найти определённую страницу, использующую определённый пользовательский шаблон, и получить ее ID, контент и другие данные. Данный код позволит вам это сделать.
Изменения
- С 3.4.0 — Введена.
- С 4.7.0 — Теперь работает с любым типом постов, не только со страницами.
Исходный код функции
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;
}
Связанные функции
get_all_page_ids()get_page_by_path()get_page_children()get_page_link()get_page_uri()get_pages()get_post_ancestors()page_template_dropdown()parent_dropdown()wp_dropdown_pages()wp_link_pages()wp_list_pages()wp_page_menu()