load_template() – подключает PHP-файл с доступом к среде WordPress

Функция по сути подключает любой PHP-файл с доступной в нём средой WordPress, а также глобальными переменными $posts, $post, $wp_did_header, $wp_query, $wp_rewrite, $wpdb, $wp_version, $wp, $id, $comment, $user_ID.

Кроме того, массив $wp_query->query_vars, если существует, будет разобран на отдельные переменные php-функцией extract(). То есть $wp_query->query_vars[ 'param1' ] превратится в $param1. Подробнее во втором примере. И ещё кое-что, параметр поиска $wp_query->query_vars[ 's' ] также будет очищен функцией esc_attr().

Если вам интересно лучше разбираться, как устроены файлы тем в WordPress и как работает их иерархия, то рекомендую посмотреть этот видеоурок.

Функция сама по себе ничего не возвращает.

load_template( $_template_file, $require_once = true, $args = array() )

Параметры

$_template_file
(строка) Полный путь на сервере к PHP-файлу шаблона. Важный момент – если файл не существует, получите ошибку 500.
$require_once
  • true – в этом случае файл будет подключаться PHP-функцией require_once(),
  • false – будет подключаться функцией require().
$args
(массив) Дополнительный массив аргументов, который вы хотите передать в подключаемый файл шаблона.

Пример 1. Подключаем файл из той же директории

В этом примере предположим, что мы используем функцию load_template() в каком-либо файле, находщемся в папке с темой. И подключим другой файл, который находится в этой же папке.

load_template( dirname( __FILE__ ) . '/true-template.php' );

Попробуем сделать то же самое, но при помощи магической константы __DIR__.

load_template( __DIR__ . '/true-template.php' );

Пробуем сделать то же самое, но при помощи функции get_stylesheet_directory().

load_template( get_stylesheet_directory() . '/true-template.php' );

Пример 2. Подключаем файл и передаём в него параметры

Способ 1. Передав новый аргумент в параметры запроса

В этом примере мы как раз-таки записываем произвольную переменную в массив $wp_query->query_vars, который при подключении файла будет разобран на отдельные переменные.

set_query_var( 'true_variable', 'Привет, файл' );
 
load_template( $template );

Вставляем этот код внутри подключаемого файла шаблона:

// выведет "Привет, файл"
echo $true_variable; // элемент массива $wp_query->query_vars[ 'true_variable' ] превратился в переменную $true_variable

Способ 2. Используя массив $args

Этот аргумент функции появился только в версии WordPress 5.5, поэтому раньше приходилось довольствоваться первым способом.

load_template( $template, true, array( 'true_variable' => 'Привет, файл' ) );

Вставляем этот код внутри подключаемого файла шаблона:

// выведет "Привет, файл"
echo $args[ 'true_variable' ];

Пример 3. Проверяем, что файл существует

Дело в том, что функция load_template() сразу же закидывает путь, который мы передаём в неё, в функции require() или require_once(), которые, в отключие от include() и include_once() будут выдавать PHP-ошибку 500 при попытке подключения несуществующего файла.

$template = __DIR__ . '/true-template.php';
if( file_exists( $template ) ) {
	load_template( $template );
}

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.