Как зарегистрировать два блока в одном плагине

Вопрос или проблема

Я начинаю разрабатывать блоки Gutenberg. После

npx @wordpress/create-block gutenpride

мой блок gutenpride готов к использованию. Поскольку сгенерированный плагин содержит структуру только для одного блока, мне интересно, какие изменения я должен внести, чтобы добавить еще один похожий блок в тот же плагин.

Итак, какие изменения я должен внести в стандартную структуру плагина gutenpride, чтобы добавить другой блок? Спасибо.

ОБНОВЛЕНИЕ: Я обнаружил, что могу найти ответы по этой теме, искат по запросу “мультиблок плагин” (ранее я не мог ничего найти). Например, этот вопрос. Таким образом, этот вопрос может быть возможным дубликатом. Я все еще исследую.

  1. Добавьте подпапку в your-plugin/src с именем блока
  2. Поместите все файлы src в эту папку
  3. Повторите 1 и 2 для других блоков, которые вы хотите добавить.

На данный момент папка src выглядит так:

введите описание изображения здесь

Будьте внимательны, редактируя каждый block.json, чтобы дать им название и т. д.

  1. Замените регистрацию единственного блока на мультиблок в файле your-plugin.php
function create_block_your_plugin_block_init() {
    register_block_type( __DIR__ . '/build/block-1' );
    register_block_type( __DIR__ . '/build/block-2' );
}
add_action( 'init', 'create_block_your_plugin_block_init' );
  1. При желании вы можете переименовать папку src в любое имя, какое вам понравится, например, blocks. В этом случае добавьте флаг --webpack-src-dir=blocks с новым именем в стартовый скрипт package.json:
"scripts": {
    "build": "wp-scripts build",
    "format": "wp-scripts format",
    "lint:css": "wp-scripts lint-style",
    "lint:js": "wp-scripts lint-js",
    "packages-update": "wp-scripts packages-update",
    "plugin-zip": "wp-scripts plugin-zip",
    "start": "wp-scripts start --webpack-src-dir=blocks"
},
  1. Запустите npm start, чтобы создать папку build

Это все.

Я думаю, что первый ответ легко следовать. Это довольно просто, но мне потребовалось время, чтобы внести все изменения правильно.

Я начал с копирования всего кода для каждого блока из ./src в директории /blocks/block-1 и /blocks/block-2.

Изменил файл plugin_name.php и package.json в директории плагина.

Изменил имена в block.json, чтобы отразить название как plugin_name/block-1 и plugin_name/block-2. Для стилей wp-block-plugin-name-block-1 и wp-block-plugin-name-block-2 в стилях в edit.js, save.js и editor.scss и styles.scss. для каждого блока.

В файле plugin_name.php включил для каждого блока внутри действия ‘init’, это делает блоки видимыми в директории блоков:

function plugin_name_block_init()
{
register_block_type( __DIR__ . '/build/block-1' );
register_block_type( __DIR__ . '/build/block-2' );
}
add_action( 'init','plugin_name_block_init');

package.json был изменен, чтобы запускать или строить все блоки. Таким образом, с этого момента скрипты ищут каждый block.json и index.js внутри директорий блоков, расположенных внутри директории ‘blocks’. Внутри ‘scripts’:

"build": "wp-scripts build --webpack-src-dir=blocks",
"start": "wp-scripts start --webpack-src-dir=blocks",

И в заключение, я внес изменения в названия стилей для каждого файла editor.scss и editor.scss, а также edit.js и save.js для каждого блока.

Теперь это работает для меня в разработке (npm start) или сборке (npm run build). Изменяет оба блока одновременно.

Я думаю, что это можно изменить, чтобы каждый раз собирать только один блок:

"start:block-1": "wp-scripts start --webpack-src-dir=blocks/block-1",

Работает, если вы вызываете это: npm run start:block-1 (не npm start:block-1)

Теперь на developer.wordpress.org есть специальный учебник по мультиблочным плагинам. Смотрите здесь: https://developer.wordpress.org/news/2024/09/17/how-to-build-a-multi-block-plugin/

Самые важные детали: когда вы начинаете свой проект, используйте wp-multi-block, а когда создаете отдельные блоки, используйте опцию --no-plugin.

Ответ или решение

Создание плагина с несколькими блоками Gutenberg — это задача, которая требует четкой структуры и понимания процесса разработки. В данной инструкции мы рассмотрим, как зарегистрировать два блока в одном плагине, используя стандартную структуру, полученную при помощи команды npx @wordpress/create-block.

Шаг 1: Создание структуры блоков

Начните с создания подкаталогов для каждого блока в папке src вашего плагина. Например, создайте следующие директории:

your-plugin/
├── src/
│   ├── blocks/
│   │   ├── block-1/
│   │   └── block-2/
│   └── index.js

Перенесите все исходные файлы, включающие логику и стили для каждого блока, в соответствующие папки.

Шаг 2: Обновление block.json

Каждый блок должен иметь свой файл block.json, в котором вы определяете название блока и другие метаданные. Убедитесь, что названия блоков уникальны и связаны с вашим плагином. Например:

Для block-1/block.json:

{
  "apiVersion": 2,
  "name": "your-plugin/block-1",
  "title": "Block 1",
  "category": "widgets",
  // другие параметры
}

Для block-2/block.json:

{
  "apiVersion": 2,
  "name": "your-plugin/block-2",
  "title": "Block 2",
  "category": "widgets",
  // другие параметры
}

Шаг 3: Регистрация блоков в плагине

В файле вашего плагина (your-plugin.php) вам нужно изменить функцию регистрации блоков. Замените единую регистрацию на множественную:

function create_block_your_plugin_block_init() {
    register_block_type( __DIR__ . '/build/blocks/block-1' );
    register_block_type( __DIR__ . '/build/blocks/block-2' );
}
add_action( 'init', 'create_block_your_plugin_block_init' );

Шаг 4: Изменение package.json

Измените ваш package.json, чтобы указать, что скрипты сборки должны использовать новую структуру папок:

"scripts": {
    "build": "wp-scripts build --webpack-src-dir=blocks",
    "start": "wp-scripts start --webpack-src-dir=blocks",
    // другие команды
}

Шаг 5: Сборка и разработка блоков

Теперь вы можете использовать команды npm start для запуска разработки или npm run build для сборки вашего плагина. Все изменения, внесенные в код блоков, будут применяться автоматически.

Шаг 6: Опциональная доработка

Если вы хотите иметь возможность собирать каждый блок по отдельности, вы можете создать отдельные команды в package.json:

"scripts": {
    "start:block-1": "wp-scripts start --webpack-src-dir=blocks/block-1",
    "start:block-2": "wp-scripts start --webpack-src-dir=blocks/block-2",
    // другие команды
}

Эти команды позволят вам запускать разработку для отдельного блока, что может быть полезно для настройки и тестирования.

Важные моменты

  • Обновление метаданных: Убедитесь, что все метаданные в файле block.json отражают правильные названия и структуру вашего плагина.
  • Тестирование: После всех изменений, тестируйте ваши блоки на предмет сбоя и корректного отображения в редакторе Gutenberg.
  • Документация: Будьте внимательны к документации WordPress, особенно к разделу, касающемуся много-блочных плагинов, на developer.wordpress.org.

После выполнения всех перечисленных шагов вы сможете успешно зарегистрировать и использовать несколько блоков в одном плагине, что значительно упростит процесс разработки и управления кодом.

Оцените материал
Добавить комментарий

Капча загружается...