get_page_templates()
Получает все существующие шаблоны постоянных страниц текущей темы (активной темы).
Функция просматривает все файлы темы на наличие строки Template Name: Название шаблона
.
Для работы во фронте, нужно подключить файл:
require_once ABSPATH . '/wp-admin/includes/theme.php';
Вместо этой функции иногда удобнее использовать конструкцию wp_get_theme()->get_page_templates(). Тогда нет необходимости подключать файл.
Однако, возвращаемый массив отличается - в нем перевернуты ключи и значения. В ключе будет название файла, а в значении название шаблона. См. пример 2.
Хуков нет.
Возвращает
Строку[]
. Ключи массива - это названия шаблона страницы, а значения - называния 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();
#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) */
#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() get page templates WP 6.6.1
function get_page_templates( $post = null, $post_type = 'page' ) { return array_flip( wp_get_theme()->get_page_templates( $post, $post_type ) ); }