Редактируемые блоки внутри блока Custom HTML – ждем в WordPress 7.1

В 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; в других случаях он игнорируется.

Фото аватара

Antony I

Веб разработчик, специализация на лучших мировых практиках: WordPress, WooCommerce, NextJS, Strapi, JAMStack ...

Основные типы проектов: CMS, eCommerce, SEO, LMS, ECM, BPM

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *