В WordPress 7.1 блок Custom HTML поддерживает чередование статического HTML с обычными редактируемыми блоками.
PR https://github.com/WordPress/gutenberg/pull/79115
<!-- wp:html -->
<div class="banner"><h1>Статический заголовок</h1>
<!-- wp:paragraph -->
<p>Редактируемый абзац</p>
<!-- /wp:paragraph -->
<footer>Статический футер</footer>
</div>
<!-- /wp:html -->
В редакторе статический маркап отображается как неактивный, а внутренние блоки можно редактировать на месте, но они заблокированы: их нельзя переместить, удалить или добавить соседние блоки. Окружающая структура остаётся целой.
Полный маркап по-прежнему доступен в модальном окне «Редактировать HTML», и сериализация остаётся неизменной, поэтому существующий контент не пострадает.
Это также делает маркап блока более дружественным для инструментов ИИ: модель может сгенерировать один блок Custom HTML, сочетая произвольный маркап с редактируемыми слотами — без необходимости создавать пользовательский блок или выполнять шаг сборки — и результат сразу же готов для редактирования.
Регистрация вариаций как «high-level блоков»
Вариации блоков теперь поддерживают поле innerContent (https://github.com/WordPress/gutenberg/pull/79659): массив статических фрагментов HTML, где каждое null отмечает позицию соответствующего элемента innerBlocks. Это позволяет вам доставлять фиксированную оболочку маркапа с редактируемыми слотами как отдельный элемент вставки — без необходимости создавать пользовательский блок:
wp.blocks.registerBlockVariation( 'core/html', {
name: 'testimonial-card',
title: 'Карта отзыва',
icon: 'format-quote',
innerContent: [ '<div class="testimonial-card">', null, '</div>' ],
innerBlocks: [
[ 'core/paragraph', { content: 'Вдохновляющая цитата.' } ],
],
} );
Вставка вариации производит блок Custom HTML с заранее определённой структурой и редактируемым абзацем внутри него. В отличие от шаблона, пользователь может редактировать только назначенные слоты, а не структуру.
innerContent применяется только к вариациям core/html; в других случаях он игнорируется.