Функция LOAD_TEMPLATE() в WordPress
Функция load_template() используется в WordPress для подключения шаблонного файла с доступом к среде WordPress. Это позволяет использовать глобальные переменные и переменные запроса внутри шаблона. Давайте рассмотрим подробнее, как эта функция работает.
Описание функции
load_template() — это функция, которая загружает указанную шаблонную страницу. Она обеспечивает, чтобы все нужные глобальные переменные были доступны при загрузке файла шаблона.
Применение
Функция используется в других местах, к примеру, в locate_template().
Хуки, связанные с функцией
Функция load_template() имеет два хуки:
wp_before_load_template— вызывается перед загрузкой шаблона.wp_after_load_template— вызывается после загрузки шаблона.
Возвращаемое значение
Функция ничего не возвращает (возвращает null).
Синтаксис функции
load_template( $_template_file, $load_once, $args );
Параметры
$_template_file(строка, обязательный) — путь к файлу шаблона.$load_once(булево) — указывает, нужно ли использоватьrequire_onceили простоrequire. По умолчанию —true.$args(массив) — дополнительные аргументы, передаваемые в шаблон. По умолчанию — пустой массив.
Примеры использования
Пример 1: Подключение шаблона в плагине с возможностью изменения в теме
Предположим, мы создаем плагин и хотим указать файл шаблона, который будет использоваться в теме. Шаблон может отличаться в зависимости от темы, и мы хотим оставить возможность его изменения. Для этого подключим файл плагина только в том случае, если он не определён в теме:
// возвращает путь к файлу, если дочерняя или родительская тема имеет такой файл
$overridden_template = locate_template( 'some-template.php' );
if ( $overridden_template ) {
load_template( $overridden_template );
} else {
// загружаем файл из директории 'templates' плагина
load_template( __DIR__ . '/templates/some-template.php' );
}
Пример 2: Передача переменной в шаблонный файл
Вы можете передать дополнительные переменные в шаблон, используя третий параметр функции load_template().
$args = [
'text' => 'Hello Template File',
];
$template = locate_template( 'template.php' );
if( $template ) {
load_template( $template, true, $args );
}
В файле template.php вы можете получить доступ к этой переменной следующим образом:
echo $args['text']; //> "Hello Template File"
Важные заметьт��
- Глобальные переменные:
$posts— массив постов.$post— текущий объект поста.$wp_did_header— булево значение (true/false).$wp_query— объект запроса WordPress.$wp_rewrite— компонент перезаписи WordPress.$wpdb— объект абстракции базы данных WordPress.$wp_version— версия WordPress.$wp— текущий экземпляр среды WordPress.$id— идентификатор.$comment— глобальный объект комментария.$user_ID— идентификатор пользователя.
Изменения
- Версия 1.5.0 — функция была введена.
- Версия 5.5.0 — добавлен параметр
$args.
Код функции load_template()
Вот как выглядит код функции в версии 6.7.2 WordPress:
function load_template( $_template_file, $load_once = true, $args = array() ) {
global $posts, $post, $wp_did_header, $wp_query, $wp_rewrite, $wpdb, $wp_version, $wp, $id, $comment, $user_ID;
if ( is_array( $wp_query->query_vars ) ) {
/*
* Использование extract() нельзя убрать. Существует много способов,
* как шаблоны могут зависеть от переменных, которые создаются
* ранее, и нет никакой возможности это отследить и удалить.
*
* Передача флага EXTR_SKIP является самым безопасным вариантом,
* гарантируя, что глобальные и функциональные переменные не могут быть перезаписаны.
*/
extract( $wp_query->query_vars, EXTR_SKIP );
}
if ( isset( $s ) ) {
$s = esc_attr( $s );
}
do_action( 'wp_before_load_template', $_template_file, $load_once, $args );
if ( $load_once ) {
require_once $_template_file;
} else {
require $_template_file;
}
do_action( 'wp_after_load_template', $_template_file, $load_once, $args );
}
Теперь у вас есть полное представление о функции load_template() и о том, как её можно использовать в вашем проекте на WordPress.