Содержание
Коротко
Через семь с половиной лет после появления блоков в ядре WordPress 7.0 позволяет зарегистрировать кастомный блок только на PHP — без React, npm и пайплайна сборки. Ключ — supports.autoRegister: ядро само генерирует клиентскую регистрацию и превью в редакторе. На CSS-Tricks разбирают пример Hello World, атрибуты и почему этот путь не заменяет полноценную JS-разработку блоков.
Что произошло
Обычный блок регистрируют дважды: в PHP и в JavaScript. Новый режим оставляет один вызов register_block_type с render_callback и флагом 'autoRegister' => true. Редактор показывает HTML с сервера: при смене настроек превью запрашивается заново через REST.
Атрибуты описывают в PHP (string, number, boolean) — в боковой панели настроек появляются базовые поля. Отдельный React-интерфейс для боковой панели писать не нужно.
Архитектура простая, но за ней — жёсткие границы: блок в редакторе не живёт внутри единого клиентского приложения редактора. Разметка подменяется асинхронно, поэтому интерактив внутри превью и надёжная работа с узлами разметки почти невозможны.
Почему это важно
Многие команды до сих пор на классических темах из‑за устаревшего PHP: шорткоды, виджеты, кастомные шапки. Переезд на блочные темы упирался в React и сборку. Регистрация только на PHP снимает оба барьера для миграции: перенести рабочий серверный код в блок за часы, а не переписывать всё на JS.
Для новых интерактивных блоков путь слабый: нет редактирования «на месте» в превью, нет загрузки картинок и многострочного форматированного текста в боковой панели, нет свежих данных из клиентского хранилища редактора (заголовок записи в блоке на PHP останется из БД, пока не сохраните и не перезагрузите). Контекст текущей записи через глобалы цикла в превью через REST тоже не гарантирован — это архитектурное ограничение на момент 7.0.
Итоговая формула автора: инструмент ценен как мостик к блочным темам, а не как замена JavaScript-блокам с нуля.
На практике
- Берите регистрацию только на
PHPдля виджетов, шорткодов, шапки/подвала и всего, что на фронте уже работает без правок в редакторе. - Не ждите идеального превью: достаточно «понятно на фронте»; в редакторе допустим плейсхолдер, как у блока содержимого записи.
- Стили — через
style/editor_styleиget_block_wrapper_attributes(); скрипты — толькоview_scriptна фронт. - Отличить превью редактора от фронта:
wp_is_rest_endpoint()плюс проверка маршрутаblock-renderer—is_admin()здесь не сработает. - Обходите отсутствие идентификатора записи осторожно (атрибут
localс$_GET['post']при регистрации) — для новых черновиков он появится только после сохранения и полной перезагрузки. - Типы атрибутов сейчас три; выпадающий список без пар «подпись → значение» — для категорий лучше не хранить только ярлык (
slug), если его переименуют.
Итог
WordPress 7.0 закрывает давний разрыв: разработчик на PHP может встроить устаревший код в блочную тему без React. Цена — урезанный опыт в редакторе и устаревшие данные в превью. Для миграции — сильный рычаг; для сложного нового блока — по-прежнему JavaScript.

