get_page_templates()
Отримує всі існуючі шаблони поточної теми (активної теми).
Функція переглядає всі файли теми на наявність рядка Template Name: Название шаблона
.
Для роботи у фронті, потрібно підключити файл:
require_once ABSPATH. '/wp-admin/includes/theme.php';
Замість цієї функції іноді зручніше використовувати конструкцію wp_get_theme()->get_page_templates() . Тоді немає потреби підключати файл.
Однак, масив, що повертається, відрізняється – в ньому перевернуті ключі і значення. У ключі буде назва файлу, а у значенні назва шаблону. Див. Приклад 2.
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] => Ще один шаблон для постійної сторінки ) */
Як бачите тут ключ – назва файлу, а значення – назва шаблону.
список змін
З версії 1.5.0 | Введено. |
З версії 4.7.0 | Added $post_type parameter. |
Код get_page_templates() get page templates WP 6.0.2
function get_page_templates( $post = null, $post_type = 'page' ) { return array_flip( wp_get_theme()->get_page_templates( $post, $post_type ) ); }