Вопрос или проблема
Чтобы получить имя шаблона из классической темы, я использую следующее:
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 для получения актуальной информации о поддержанных методах взаимодействия с шаблонами блоков.