Функция по сути подключает любой 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 ); }
Источник: Блог Миши Рудрастых