FSE (block theme)
FSE (Full Site Editing) - это набор возможностей WordPress, который позволяет редактировать не только контент записи, но и всю структуру сайта через блоки: header, footer, loop, sidebar, навигацию, шаблоны страниц и шаблонные части.
В современных версиях WordPress чаще используется термин Site Editor - редактор сайта. А тема, которая поддерживает такой режим, называется block theme.
Block theme - это тема, где шаблоны описаны не PHP-файлами, а HTML-файлами с разметкой блоков.

Из чего состоит блочная тема (block theme)
Минимально блочная тема должна иметь файл index.html в папке /templates (или старой папке /block-templates).
Обычно структура выглядит так:
theme/ │ ├─ parts/ - части шаблонов: header, footer, sidebar и т.д. │ ├─ header.html │ ├─ footer.html │ └─ sidebar.html │ ├─ patterns/ - паттерны блоков. │ └─ *.php │ ├─ styles/ - вариации глобальных стилей. │ └─ *.json │ ├─ templates/ - основные шаблоны страниц. │ ├─ index.html │ ├─ front-page.html │ ├─ home.html │ ├─ single.html │ ├─ page.html │ ├─ archive.html │ └─ 404.html │ ├─ theme.json - глобальные настройки и стили: палитра, layout и т.д. ├─ style.css - метаданные темы и базовые стили. └─ functions.php - PHP-логика темы, если она нужна.
Файлы из /templates соответствуют обычной иерархии шаблонов WordPress, только вместо .php используется .html.
Файлы из /parts - это переиспользуемые части шаблона. Подключаются через блок core/template-part:
<!-- wp:template-part {"slug":"header","tagName":"header"} /-->Чтобы определить в коде является ли тема блочной есть функция: wp_is_block_theme()
Как загружается шаблон страницы
При запросе, после того как WordPress загрузил окружение и подготовил основной запрос:
- Вызывается файл wp-includes/template-loader.php (до FSE всё работало так же).
-
В нём определяется тип текущей страницы и вызывается соответствующая функция:
- get_front_page_template()
- get_home_template()
- get_404_template()
-
...каждая из таких функций основывается на:
$template = 'wp-includes/template-canvas.php'; // упрощено $template = apply_filters( 'template_include', $template ); do_action( 'wp_before_include_template', $template ); include $template;
Далее, вся страница создается через get_the_block_template_html() и выводится в
<body>.
Другими словами:
-
WordPress определяет подходящий шаблон по обычной иерархии файлов темы.
-
Для block theme он ищет не
.php, а.htmlшаблон в папкеtemplates, напримерtemplates/front-page.html. HTML-файлы должны называться так же, как PHP-файлы в классической иерархии шаблонов. -
Если шаблон был изменен в редакторе сайта, WordPress может взять его не из файла темы, а из базы данных (
wp_template). Для частей шаблона используетсяwp_template_part. -
Содержимое шаблона читается как текст и парсится как набор блоков.
-
Подключаются части шаблона из
parts, например header и footer через блокcore/template-part. -
Применяется
theme.json: цвета, отступы, шрифты, layout, стили блоков, CSS-переменные. -
WordPress генерирует итоговые стили и добавляет их на страницу через систему global styles.
- Собранная страница выводится через единый файл шаблона: wp-includes/template-canvas.php.
По сути, FSE - это шаблонизация на блоках поверх классического PHP-ядра WordPress.
Что происходит при редактировании шаблона
Исходные шаблоны лежат в папке темы templates/. Когда шаблон изменяется через редактор сайта, WP не меняет файл темы, а сохраняет изменения в базе данных в типах постов:
wp_template- для шаблонов.wp_template_part- для частей шаблонов.
Поэтому на сайте может одновременно использоваться смесь:
- файловых шаблонов из темы;
- измененных шаблонов из базы данных.
Если пользователь сбросит шаблон в редакторе, то снова будет использоваться исходный файл из темы.
Как рендерится HTML
Шаблон block theme - это не обычный HTML. Это HTML с комментариями блоков:
<!-- wp:template-part {"slug":"header","tagName":"header"} /-->
<!-- wp:group {"layout":{"type":"constrained"}} -->
<div class="wp-block-group">
<!-- wp:post-title /-->
<!-- wp:post-content /-->
</div>
<!-- /wp:group -->
<!-- wp:template-part {"slug":"footer","tagName":"footer"} /-->
WordPress парсит блоки из такого текста и рендерит их.
Упрощенно процесс такой:
- WordPress находит подходящий шаблон.
- Получает его содержимое из файла темы (или из базы данных).
- Парсит HTML блоков (включая template-part).
- Рендерит блоки.
- Собирает стили из
theme.json, настроек и стилей блоков. - Выводит готовую страницу через wp-includes/template-canvas.php.
Динамические блоки рендарятся на сервере. Например core/post-title, core/post-content, core/query, core/navigation и другие блоки получают данные из WordPress во время вывода страницы.
Роль theme.json
theme.json - это конфигурационный файл темы. Он описывает, какие настройки доступны в редакторе и какие стили применяются к сайту и блокам.
Подробнее про него и все его параметры, читайте в отдельной статье.
Важно: theme.json не является самим шаблоном. Он не определяет структуру страницы. Структура лежит в /templates и /parts, а theme.json управляет настройками и стилями.
FSE и классический PHP
FSE не отменяет PHP-шаблоны полностью.
PHP по-прежнему нужен для:
- хуков и фильтров;
- регистрации блоков;
- динамических блоков;
- подключения скриптов и стилей;
- кастомной логики темы;
- интеграции с плагинами;
- изменения данных перед выводом.
Но основная разметка страницы в block theme теперь хранится не в PHP, а в HTML-шаблонах с блоками.
Что изменилось по сравнению с классической темой
В классической теме разметка собирается PHP-шаблонами:
├─ front-page.php ├─ home.php ├─ single.php ├─ page.php ├─ archive.php ├─ header.php └─ footer.php
В block theme вместо PHP-разметки используются HTML-шаблоны с блоками:
├─ templates/ │ ├─ front-page.html │ ├─ home.html │ ├─ single.html │ ├─ page.html │ └─ archive.html │ └─ parts/ ├─ header.html └─ footer.html
То есть меняется не вся архитектура WordPress, а слой темы:
classic theme: PHP-шаблон → HTML страницы block theme: HTML-шаблон с блоками → парсинг блоков → HTML страницы
При этом WordPress остается PHP-приложением. Запрос, WP_Query, хуки, фильтры, плагины и серверный рендеринг блоков продолжают работать как обычно.
Итог
FSE - это шаблонизация сайта на блоках поверх классического PHP-ядра WordPress.
Главная идея такая:
- PHP-ядро WordPress обрабатывает запрос.
- Иерархия шаблонов выбирает нужный шаблон.
- Block theme предоставляет
.htmlшаблон с блоками. - WordPress парсит и рендерит блоки.
theme.jsonзадает настройки и стили.- Редактор сайта позволяет менять шаблоны и стили из админки.
То есть FSE переносит управление структурой сайта из PHP-файлов в систему блоков - в редактор в админке, но не заменяет WordPress-ядро и серверный рендеринг.