WordPress как на ладони
wordpress jino

get_page_templates() WP 1.5

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

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

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

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

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

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

Используется в: page_template_dropdown().
Работает на основе: WP_Theme::get_page_templates()

Хуков нет.

Возвращает

Массив. Ключи массива - это названия шаблона страницы, а значения - называния 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] => Еще один шаблон для постоянной страницы
)
*/

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

Код get page templates: wp-admin/includes/theme.php WP 4.8.2

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

Cвязанные функции

Из раздела: Другие функции темы

get_page_templates Комментариев нет

Здравствуйте, !

Ваш комментарий