Редактор блоков Гутенберг (Gutenberg) в WordPress представляет собой мощный инструмент для создания и редактирования контента, который позволяет пользователям легко добавлять различные элементы (блоки) в свои статьи и страницы. Разработка пользовательских блоков для Гутенберга дает возможность расширить функциональность вашего сайта и предоставить уникальные возможности для редактирования контента. Рассмотрим основные этапы разработки блоков для Гутенберга.

Основы разработки блоков для Гутенберга

Подготовка среды разработки:

  • Убедитесь, что у вас установлены Node.js и npm.
  • Создайте новую директорию для вашего проекта и инициализируйте npm:
mkdir my-gutenberg-block cd my-gutenberg-block npm init -y

Установка необходимых пакетов:

Установите необходимые зависимости, включая пакеты для разработки блоков:

npm install @wordpress/scripts @wordpress/blocks @wordpress/i18n @wordpress/element @wordpress/editor --save-dev

Создание файлов блоков:

Создайте структуру директорий и файлов:

my-gutenberg-block/
├── src/
│   └── block.js
├── style.css
├── block.json
├── package.json
└── webpack.config.js

Конфигурация Webpack:

Настройте webpack.config.js для сборки вашего блока:

const defaultConfig = require('@wordpress/scripts/config/webpack.config');
module.exports = {
  ...defaultConfig,
  entry: './src/block.js',
  output: {
    path: __dirname + '/build',
    filename: 'block.js',
  },
};

Регистрация блока:

В файле block.js импортируйте необходимые пакеты и зарегистрируйте блок:

import { registerBlockType } from '@wordpress/blocks';
import { __ } from '@wordpress/i18n';
import { RichText } from '@wordpress/block-editor';

registerBlockType('my-plugin/my-custom-block', {
  title: __('My Custom Block', 'text-domain'),
  icon: 'smiley',
  category: 'common',
  attributes: {
    content: {
      type: 'string',
      source: 'html',
      selector: 'p',
    },
  },
  edit: (props) => {
    const { attributes: { content }, setAttributes } = props;

    const onChangeContent = (newContent) => {
      setAttributes({ content: newContent });
    };

    return (
      <RichText
        tagName="p"
        value={ content }
        onChange={ onChangeContent }
        placeholder={ __('Write your text...', 'text-domain') }
      />
    );
  },
  save: (props) => {
    const { attributes: { content } } = props;
    return <RichText.Content tagName="p" value={ content } />;
  },
});

Добавление стилей:

Создайте файл стилей style.css и добавьте необходимые стили для вашего блока:

.wp-block-my-plugin-my-custom-block {
  background-color: #f0f0f0;
  padding: 20px;
  border: 1px solid #ddd;
}

Регистрация стилей и скриптов в WordPress:

Сборка и активация блока:

Соберите ваш проект с помощью команды:

npm run build

Зарегистрируйте ваш блок в PHP коде, например в файле плагина:

function my_plugin_register_block() {
  wp_register_script(
    'my-plugin-block',
    plugins_url('build/block.js', __FILE__),
    array('wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor'),
    filemtime(plugin_dir_path(__FILE__) . 'build/block.js')
  );

  wp_register_style(
    'my-plugin-block',
    plugins_url('style.css', __FILE__),
    array(),
    filemtime(plugin_dir_path(__FILE__) . 'style.css')
  );

  register_block_type('my-plugin/my-custom-block', array(
    'editor_script' => 'my-plugin-block',
    'style' => 'my-plugin-block',
  ));
}
add_action('init', 'my_plugin_register_block');

Итог

Разработка блоков для редактора Гутенберг предоставляет огромные возможности для кастомизации и улучшения функциональности WordPress-сайтов. Следуя вышеприведенным шагам, вы сможете создать и настроить свой собственный блок, который идеально подойдет для нужд вашего проекта.