Функция GET_PAGE_TEMPLATE_SLUG() в WordPress: описание, использование, примеры

## Функция 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()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *