Получить имя используемого шаблона/*html файла

Вопрос или проблема

Чтобы получить имя шаблона из классической темы, я использую следующее:

add_action('wp_head', 'show_template');
function show_template() {
    global $template;
    echo basename($template);
}

Но при переходе на шаблоны FSE мне нужно знать, как получить файл template/*.html, который используется. Как это сделать?

Функция locate_block_template() является основной функцией, которая определяет список возможных блочных шаблонов для данной (запрашиваемой) страницы до окончательного шаблона для использования.

В этой функции устанавливается глобальная переменная $_wp_current_template_id. Это может использоваться как идентификатор для определенного файла шаблона. Однако, имейте в виду, что, поскольку переменная начинается с подчеркивания, это по соглашению означает, что это глобальная переменная, предназначенная только для внутреннего использования в ядре WordPress.

Ответ или решение

Для получения имени файла шаблона в Full Site Editing (FSE) темах WordPress требуется иное решение, чем для классических тем. В классических темах используется глобальная переменная $template, но в контексте FSE процесс определения шаблона функционирует иначе и требует использования других механизмов.

Теория

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

Пример

Функция locate_block_template() является ключевым механизмом, который WordPress использует для определения подходящего шаблона блока для конкретной страницы. Эта функция устанавливает глобальную переменную $_wp_current_template_id, которая служит идентификатором разрешенного шаблона файла. Хотя данная переменная дает возможность определить текущий используемый шаблон, стоит отметить, что использование переменных, начинающихся с подчеркивания, обычно предназначено для внутреннего использования самой системы WordPress.

Применение

Чтобы получить имя файла шаблона в FSE теме, можно воспользоваться следующим методом:

add_action('wp_head', 'show_fse_template');
function show_fse_template() {
    global $_wp_current_template_id;
    if ($_wp_current_template_id) {
        echo esc_html(basename($_wp_current_template_id));
    }
}

Этот код добавляет функцию show_fse_template к экшену wp_head, которая выводит имя текущего блок-шаблона. Однако важно понимать, что прямое обращение к системным глобальным переменным может нарушать принципы устойчивости и обновляемости кода, так как эти переменные не предназначены для публичного использования и их поведение не гарантируется в будущих версиях WordPress. Лучше всего следить за официальной документацией и API WordPress для получения актуальной информации о поддержанных методах взаимодействия с шаблонами блоков.

Оцените материал
Добавить комментарий

Капча загружается...