Зміст
Коротко
Через сім із половиною років після появи блоків у ядрі 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.

