get_page_templates()WP 1.5.0

Получает все существующие шаблоны постоянных страниц текущей темы (активной темы).

Функция просматривает все файлы темы на наличие строки Template Name: Название шаблона.

Для работы во фронте, нужно подключить файл:

require_once ABSPATH . '/wp-admin/includes/theme.php';

Вместо этой функции иногда удобнее использовать конструкцию wp_get_theme()->get_page_templates(). Тогда нет необходимости подключать файл.

Однако, возвращаемый массив отличается - в нем перевернуты ключи и значения. В ключе будет название файла, а в значении название шаблона. См. пример 2.

Работает на основе: WP_Theme::get_page_templates()
Основа для: page_template_dropdown()

Хуков нет.

Возвращает

Строку[]. Ключи массива - это названия шаблона страницы, а значения - называния php файла:

Array (
	[Название шаблона страницы] => page_template-file.php
	[Название шаблона страницы 2] => page_template-file2.php
)

Использование

$templates = get_page_templates();
$post(WP_Post/null)
Страница, которая редактируется. Обычно этот параметр не указывается.
По умолчанию: null
$post_type(строка)
Тип записи, шаблоны для которого нужно получить. С версии 4.7.
По умолчанию: 'page'

Примеры

По умолчанию, вызов функции может вызвать ошибку. Чтобы функция работала нужно подключить файл в котором она расположена:

include( ABSPATH . '/wp-admin/includes/theme.php' );
$templates = get_page_templates();
0

#1 Выведем на экран называние шаблонов постоянных страниц

Предположим, что у нас в теме есть 2 шаблона для постоянных страниц: "Архивная страница" и "Одна колонка, без меню навигации":

include( ABSPATH . '/wp-admin/includes/theme.php' );

$templates = get_page_templates();

print_r( $templates );

/* вернет:
Array (
	[Архивная страница] => page_archive-template.php
	[Одна колонка, без меню навигации] => page_one-column-template.php 
)
*/

foreach ( $templates as $template_name => $template_filename ) {
   echo "$template_name ($template_filename)<br />";
}

/* Вернет:
Архивная страница (page_archive-template.php)
Одна колонка, без меню навигации (page_one-column-template.php)
*/
0

#2 Использование Метода get_page_templates() класса WP_Theme

Удобнее и правильнее использовать не функцию get_page_templates(), а метод класса get_page_templates(). В этом случает нет необходимости подключать нужный файл:

$templates = wp_get_theme()->get_page_templates();
print_r( $templates );

/* Вернет:
Array
(
	[my-custom-page.php] => Мой шаблон постоянной страницы
	[my-page-templates/my-second-page.php] => Еще один шаблон для постоянной страницы
)
*/

Как видите здесь ключ - название файла, а значение - название шаблона.

Список изменений

С версии 1.5.0 Введена.
С версии 4.7.0 Added the $post_type parameter.

Код get_page_templates() WP 6.5.2

function get_page_templates( $post = null, $post_type = 'page' ) {
	return array_flip( wp_get_theme()->get_page_templates( $post, $post_type ) );
}