Функция get_page_templates()
позволяет получить список доступных шаблонов страниц (Page Templates) для текущей темы WordPress. Шаблоны страниц — это специальные файлы шаблонов, которые можно назначать отдельным страницам для изменения их внешнего вида и функционала.
Описание
Функция возвращает массив шаблонов для указанного типа записи (по умолчанию это page
) с их названиями и соответствующими именами файлов. Эта информация может быть использована для создания выбора шаблона при редактировании страниц, вывода доступных шаблонов на фронтенде и в других случаях.
Если шаблон содержит в комментариях строку Template Name:
, этот шаблон будет распознан WordPress и возвращен функцией.
get_page_templates( WP_Post|null $post = null, string $post_type = ‘page’ ): string[]
Параметры
$post
(WP_Post | null, необязательно) — Запись, для которой нужно получить шаблоны. Обычно используется для редактируемой записи.- По умолчанию:
null
.
- По умолчанию:
$post_type
(строка, необязательно) — Тип записи, для которого нужно получить шаблоны.- По умолчанию:
'page'
.
- По умолчанию:
Возвращаемое значение
Функция возвращает массив строк, где ключом является название шаблона, а значением — имя файла шаблона (PHP-файла).
Примечание
Для работы с функцией во фронтенде (например, при выводе списка шаблонов на страницах сайта), нужно подключить файл: ABSPATH . '/wp-admin/includes/theme.php'
. Однако удобнее использовать метод класса WP_Theme::get_page_templates()
, поскольку он автоматически загружает нужные данные.
Пример 1: Получение и вывод доступных шаблонов с использованием функции get_page_templates()
Чтобы получить список шаблонов и вывести их названия и имена файлов на экран, выполните следующий код:
// Подключаем файл, если функция используется во фронтенде
include( ABSPATH . '/wp-admin/includes/theme.php' );
// Получаем все шаблоны страниц
$templates = get_page_templates();
// Выводим массив шаблонов
print_r( $templates );
/* Результат:
Array (
[Архивная страница] => page_archive-template.php
[Шаблон без боковой колонки] => page_no-sidebar-template.php
)
*/
// Пример форматированного вывода шаблонов
foreach ( $templates as $template_name => $template_filename ) {
echo "$template_name ($template_filename)<br />";
}
/* Результат:
Архивная страница (page_archive-template.php)
Шаблон без боковой колонки (page_no-sidebar-template.php)
*/
Пример 2: Использование метода get_page_templates()
класса WP_Theme
Метод класса WP_Theme::get_page_templates()
удобен, так как не требует ручного подключения файла, и является более предпочтительным способом работы с шаблонами.
// Получаем текущую тему
$theme = wp_get_theme();
// Получаем список шаблонов для страниц
$templates = $theme->get_page_templates();
// Выводим массив шаблонов
print_r( $templates );
/* Результат:
Array (
[my-custom-page.php] => Мой кастомный шаблон
[templates/two-column.php] => Шаблон с двумя колонками
)
*/
Пример 3: Условное использование шаблонов для конкретной страницы
Вы можете использовать get_page_templates()
для определения доступных шаблонов и динамического выбора одного из них для определенной страницы:
$page_templates = get_page_templates();
$post_id = get_the_ID(); // ID текущей страницы
if ( isset( $page_templates['Шаблон без боковой колонки'] ) ) {
update_post_meta( $post_id, '_wp_page_template', 'page_no-sidebar-template.php' );
}
Этот код назначит шаблон «Шаблон без боковой колонки» для страницы, если этот шаблон доступен в теме.
Заключение
Функция get_page_templates()
предоставляет удобный способ для получения всех доступных шаблонов страниц в текущей теме WordPress. Используя эту функцию или метод класса WP_Theme::get_page_templates()
, вы можете динамически выводить список шаблонов и назначать их страницам в зависимости от их контекста. Это особенно полезно для кастомизации страниц и настройки тем.