Функция LOAD_TEMPLATE() в WordPress: описание, параметры и примеры использования.

Функция 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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *