Функция load_template()
в WordPress используется для загрузки и подключения файла шаблона. Она позволяет динамически включать нужные шаблоны и выводить их содержимое в определенных местах сайта. Это особенно полезно для разработчиков тем и плагинов, так как обеспечивает гибкость в управлении шаблонами.
load_template( string $template, bool $require_once = true, array $args = array() )
Аргументы:
$template
(string) (обязательный) – Полный путь до файла шаблона, который необходимо загрузить.$require_once
(bool) (необязательный) – Определяет, следует ли использоватьrequire_once
при загрузке файла. По умолчанию значение true.$args
(array) (необязательный) – Дополнительные параметры для подключаемого файла. Используется с версии WP 5.5. По умолчанию пустой массив.
Возвращаемое значение
Функция не возвращает значения, она подключает указанный файл в PHP с помощью require_once
.
Особенности и использование
Функция load_template()
гарантирует, что среда WordPress уже установлена на момент подключения файла. Она также устанавливает глобальные переменные: $posts
, $post
, $wp_did_header
, $wp_query
, $wp_rewrite
, $wpdb
, $wp_version
, $wp
, $id
, $comment
, $user_ID
.
Пример 1: Загрузка шаблона с использованием require_once
function genius_custom_template_loader() {
$template_path = get_template_directory() . '/custom-template.php';
load_template( $template_path, true );
}
add_action( 'wp_footer', 'genius_custom_template_loader' );
В этом примере файл custom-template.php
будет загружен и выполнен один раз в нижнем колонтитуле (footer) вашего сайта.
Пример 2: Загрузка шаблона без использования require_once
function genius_custom_template_loader_multiple() {
$template_path = get_template_directory() . '/custom-template.php';
load_template( $template_path, false );
}
add_action( 'wp_footer', 'genius_custom_template_loader_multiple' );
В этом примере файл шаблона может быть загружен несколько раз, если функция genius_custom_template_loader_multiple
будет вызвана несколько раз. Это может быть полезно, если вы хотите повторно использовать один и тот же шаблон в разных частях страницы.
Пример 3: Динамическое подключение шаблона на основе условия
function dynamic_template_loader() {
if ( is_singular('product') ) {
$template_path = get_template_directory() . '/single-product-template.php';
load_template( $template_path, true );
} elseif ( is_page() ) {
$template_path = get_template_directory() . '/page-template.php';
load_template( $template_path, true );
}
}
add_action( 'template_redirect', 'dynamic_template_loader' );
В этом примере шаблон single-product-template.php
будет загружаться для одиночных записей типа product
, а шаблон page-template.php
– для обычных страниц.
Пример 4: Подключение файла-шаблона в плагине с возможностью его изменения в теме
Предположим, мы создаем плагин, и нам нужно указать файл шаблона, который будет использоваться в теме. Логично, что для разных тем файл шаблона будет разным, и нам нужно оставить возможность изменять файл шаблона из темы.
if ( $overridden_template = locate_template('some-template.php') ) {
// locate_template() вернет путь до файла, если родительская или дочерняя тема содержит такой файл
load_template( $overridden_template );
} else {
// если файл не найден в теме или дочерней теме, загружаем файл из каталога 'templates' плагина
load_template( dirname( __FILE__ ) . '/templates/some-template.php' );
}
Основа для функции locate_template()
Функция load_template()
служит основой для функции locate_template()
, которая ищет и возвращает путь к файлу шаблона в теме или дочерней теме.
Хуки в функции load_template()
wp_before_load_template
wp_after_load_template
Эти хуки позволяют добавлять действия до и после загрузки шаблона.
Заключение
Функция load_template()
предоставляет разработчикам WordPress гибкость и удобство при работе с шаблонами. Она позволяет динамически загружать и подключать шаблоны в нужных местах сайта, что значительно упрощает процесс разработки и управления темами и плагинами.