С момента своего появления в WordPress 5.0, редактор Gutenberg кардинально изменил подход к созданию контента, превратив традиционный текстовый редактор в мощную блочную систему. Этот сдвиг не просто обновил пользовательский интерфейс; он открыл беспрецедентные возможности для гибкости, модульности и интерактивности в создании страниц и записей. Теперь каждый элемент контента – от заголовка до изображения, от кнопки до сложной галереи – представлен как отдельный, управляемый блок.
Для разработчиков и продвинутых пользователей WordPress, понимание и умение создавать собственные блоки Gutenberg стало ключевым навыком. Это позволяет не только расширять функционал редактора под специфические нужды проекта, но и создавать уникальные, высокопроизводительные решения, которые легко интегрируются в экосистему WordPress.
Данный исчерпывающий учебник призван стать вашим проводником в мир блоков Gutenberg. Мы начнем с фундаментальных концепций, рассмотрим архитектуру редактора, углубимся в необходимые технологии (PHP, JavaScript, React), а затем перейдем к пошаговому созданию статических и динамических кастомных блоков. Вы узнаете, как работать с атрибутами, использовать API WordPress для регистрации блоков и, в конечном итоге, как превратить свои разработки в полноценные плагины, готовые к публикации. Приготовьтесь освоить инструменты и методы, которые позволят вам полностью раскрыть потенциал блочного редактора WordPress.
Введение в мир блоков Gutenberg
Что такое редактор Gutenberg и концепция блоков?
Редактор Gutenberg, представленный в WordPress 5.0, кардинально изменил подход к созданию контента. Его фундаментальная идея — "все есть блок". Это означает, что каждый элемент на странице — от абзаца текста и изображения до кнопок, галерей и виджетов — представлен как отдельный, самодостаточный блок. Такая концепция позволяет пользователям интуитивно собирать сложные макеты, комбинируя различные типы блоков. Каждый блок инкапсулирует не только свой контент, но и уникальные настройки стиля и поведения, делая процесс редактирования более предсказуемым и визуальным, в отличие от единого текстового поля классического редактора.
Эволюция и преимущества блочного подхода в WordPress
Переход от классического редактора TinyMCE к блочному редактору Gutenberg стал значительным шагом в эволюции WordPress, направленным на модернизацию пользовательского опыта и расширение возможностей разработчиков. Этот блочный подход принес ряд неоспоримых преимуществ:
-
Визуальное редактирование (WYSIWYG): Пользователи видят контент максимально приближенным к тому, как он будет выглядеть на фронтенде, что значительно упрощает процесс дизайна.
-
Модульность и гибкость: Блоки легко перемещать, дублировать, удалять и настраивать, обеспечивая беспрецедентную гибкость в создании макетов без необходимости кодирования.
-
Единообразие и стандартизация: Блоки помогают поддерживать согласованный дизайн и структуру контента на всем сайте.
-
Расширяемость: Разработчики могут создавать собственные кастомные блоки, значительно расширяя функционал редактора и предлагая уникальные решения.
-
Оптимизация рабочего процесса: Благодаря интуитивному интерфейсу и возможности сохранения шаблонов блоков, создание контента становится быстрее и эффективнее.
-
Основа для Full Site Editing (FSE): Gutenberg является краеугольным камнем для будущих итераций WordPress, включая полное редактирование сайта, что делает его освоение стратегически важным.
Что такое редактор Gutenberg и концепция блоков?
После общего знакомства с WordPress 5.0 и его ключевой особенностью, редактором Gutenberg, давайте углубимся в его суть и разберем, что же он собой представляет и какова концепция блоков.
Редактор Gutenberg – это современный визуальный редактор контента для WordPress, который был представлен в версии 5.0 в конце 2018 года. Он пришел на смену классическому редактору TinyMCE, кардинально изменив подход к созданию и управлению содержимым. Основная идея Gutenberg заключается в том, чтобы сделать процесс редактирования более интуитивным, гибким и визуально предсказуемым, приближая его к принципам WYSIWYG (What You See Is What You Get).
В основе Gutenberg лежит концепция блоков. Каждый элемент контента на странице или в записи – будь то абзац текста, изображение, заголовок, кнопка, галерея или даже сложный макет – представлен как отдельный, самодостаточный блок. Это означает, что вместо единого текстового поля, как в классическом редакторе, вы работаете с набором независимых, но взаимосвязанных компонентов.
Ключевые особенности концепции блоков:
-
Модульность: Каждый блок является отдельным модулем со своими настройками и стилями.
-
Гибкость: Блоки можно легко перемещать, дублировать, удалять и трансформировать.
-
Визуализация: Редактирование происходит непосредственно в макете, максимально приближенном к конечному виду на сайте.
-
Расширяемость: Разработчики могут создавать собственные кастомные блоки, значительно расширяя функционал редактора и возможности по созданию уникального контента.
Эволюция и преимущества блочного подхода в WordPress
Переход от классического редактора TinyMCE к Gutenberg, официально представленному в WordPress 5.0 в конце 2018 года, ознаменовал собой фундаментальное изменение в подходе к созданию контента. Это была не просто замена инструмента, а стратегическое решение, направленное на модернизацию пользовательского опыта и расширение возможностей платформы. Проект Gutenberg изначально задумывался как многофазная инициатива, выходящая за рамки простого редактора записей, с конечной целью охватить все аспекты редактирования сайта (Full Site Editing).
Преимущества блочного подхода:
-
Интуитивное визуальное редактирование: Блоки позволяют создавать контент, максимально приближенный к конечному виду на фронтенде (WYSIWYG), что значительно упрощает процесс для пользователей без навыков кодирования.
-
Модульность и переиспользование: Каждый блок является самодостаточным компонентом. Это способствует созданию единообразного дизайна и позволяет легко переиспользовать элементы контента на разных страницах и записях.
-
Гибкость и контроль: Блоки предоставляют детальный контроль над структурой и стилем каждого элемента, позволяя пользователям и разработчикам создавать сложные макеты без необходимости писать HTML или CSS вручную.
-
Расширяемость: Архитектура блоков открывает широкие возможности для разработчиков. Создание кастомных блоков позволяет интегрировать уникальный функционал и дизайн, идеально соответствующий потребностям конкретного проекта или ниши.
-
Подготовка к будущему: Блочный подход является основой для дальнейшего развития WordPress, включая Full Site Editing (FSE) и блочные темы, что делает его ключевым элементом для любого, кто работает с платформой.
Подготовка к разработке: инструментарий и базовые навыки
Чтобы эффективно разрабатывать собственные блоки Gutenberg и в полной мере использовать потенциал блочного редактора, необходимо обладать определенным набором знаний и правильно настроить рабочее окружение. Это позволит не только создавать функциональные блоки, но и поддерживать их в долгосрочной перспективе.
Необходимые знания и технологии
Разработка блоков Gutenberg требует понимания нескольких ключевых технологий:
-
PHP: Является основой WordPress. PHP используется для регистрации блоков на серверной стороне (
register_block_type), определения их атрибутов, а также для рендеринга динамических блоков. Понимание основ PHP и API WordPress критически важно. -
JavaScript (ESNext): Основной язык для фронтенда блоков. Именно на JavaScript пишется логика взаимодействия блока в редакторе, его интерфейс и обработка данных. Знание современного JavaScript (ES6+) обязательно.
-
React: Gutenberg построен на фреймворке React. Понимание его концепций, таких как компоненты, состояние (state), свойства (props) и жизненный цикл, является фундаментальным для создания интерактивных и сложных блоков.
Настройка окружения: Create Block, WP-CLI и IDE
Правильно настроенное окружение значительно упрощает процесс разработки:
-
@wordpress/create-block: Это официальный инструмент командной строки, который позволяет быстро инициализировать новый блок Gutenberg. Он автоматически настраивает необходимую структуру файлов, Webpack, Babel и React, избавляя разработчика от ручной конфигурации сборки. Это идеальная отправная точка для любого нового блока. -
WP-CLI: Мощный инструмент командной строки для управления WordPress. Он позволяет автоматизировать множество задач, таких как установка WordPress, управление плагинами, темами, пользователями и базами данных. Хотя он не является строго обязательным для создания блоков, он незаменим для эффективной разработки и тестирования в целом.
-
IDE (Integrated Development Environment): Современная IDE, такая как Visual Studio Code, с соответствующими расширениями для PHP, JavaScript и React, значительно повысит вашу продуктивность. Она предоставит подсветку синтаксиса, автодополнение, отладку и другие полезные функции.
Необходимые знания и технологии (PHP, JavaScript, React)
Разработка блоков Gutenberg требует комплексного набора навыков, охватывающего как серверную, так и клиентскую стороны WordPress. Понимание этих технологий является фундаментом для создания функциональных и интерактивных блоков.
-
PHP: Является основой WordPress и играет ключевую роль в серверной части блоков. Вам потребуется знание PHP для:
-
Регистрации блоков с помощью функции
register_block_type(). -
Определения атрибутов блока и их обработки.
-
Создания динамических блоков, где рендеринг HTML происходит на сервере через
render_callback. -
Взаимодействия с базой данных WordPress и другими API.
-
-
JavaScript (ESNext): Современный JavaScript необходим для всей клиентской логики редактора Gutenberg. Знание ESNext (современные стандарты JavaScript, такие как стрелочные функции, деструктуризация,
async/await) критически важно для:-
Определения поведения блока в редакторе.
-
Управления состоянием блока и его интерактивностью.
-
Взаимодействия с API редактора Gutenberg и WordPress REST API.
-
Использования модульной системы (импорт/экспорт) для организации кода.
-
-
React: Библиотека React лежит в основе пользовательского интерфейса редактора Gutenberg. Опыт работы с React позволит вам:
-
Создавать компоненты для интерфейса блока в редакторе (например, элементы управления, настройки).
-
Эффективно управлять состоянием и жизненным циклом компонентов.
-
Понимать архитектуру редактора Gutenberg, который построен на React-компонентах.
-
Настройка окружения: Create Block, WP-CLI и IDE
После того как вы освоили необходимые теоретические основы, следующим шагом является настройка эффективной среды разработки. Правильно настроенный инструментарий значительно упрощает процесс создания и отладки блоков Gutenberg. Рассмотрим ключевые компоненты.
Create Block
Официальный инструмент @wordpress/create-block является краеугольным камнем для быстрого старта. Это утилита командной строки, которая генерирует базовую структуру нового блока Gutenberg, включая все необходимые файлы для PHP, JavaScript (React) и CSS, а также конфигурацию для сборки (Webpack). Использование create-block избавляет от ручной настройки boilerplate-кода и инструментов сборки, позволяя разработчику сосредоточиться непосредственно на логике блока. Для его использования достаточно выполнить команду npx @wordpress/create-block your-block-name в корневой директории вашего плагина или темы.
WP-CLI
WP-CLI – это официальный интерфейс командной строки для WordPress. Он позволяет управлять установкой WordPress, плагинами, темами, пользователями, базами данных и многим другим прямо из терминала. Для разработчиков блоков WP-CLI незаменим для автоматизации рутинных задач, таких как активация/деактивация плагинов, сброс базы данных или создание тестовых данных. Хотя WP-CLI не имеет прямых команд для создания блоков, он является мощным вспомогательным инструментом для управления средой разработки WordPress в целом.
IDE (Integrated Development Environment)
Выбор интегрированной среды разработки (IDE) играет важную роль в продуктивности. Современные IDE предлагают функции, такие как подсветка синтаксиса, автодополнение кода, отладка, интеграция с системами контроля версий (Git) и линтеры, которые помогают поддерживать чистоту и качество кода. Среди популярных вариантов для разработки WordPress и React-приложений выделяются:
-
VS Code (Visual Studio Code): Бесплатный, легкий и очень расширяемый редактор с огромным количеством плагинов для PHP, JavaScript, React и WordPress.
-
PhpStorm: Мощная коммерческая IDE, специально разработанная для PHP-разработки, но также отлично поддерживающая JavaScript и React.
Настройка этих инструментов обеспечит прочную основу для эффективной и комфортной разработки кастомных блоков Gutenberg.
Создание первого кастомного блока Gutenberg
После того как среда разработки настроена, можно приступать к созданию первого кастомного блока. Самый простой способ начать — использовать инструмент @wordpress/create-block, который мы упоминали ранее. Он автоматически генерирует всю необходимую структуру файлов и базовый код.
Анатомия блока: register_block_type, editor_script, editor_style
Каждый блок WordPress регистрируется на стороне PHP с помощью функции register_block_type(). Эта функция связывает имя блока с его поведением и внешним видом. Ключевые параметры включают:
-
name: Уникальный идентификатор блока (например,my-plugin/my-block). -
title: Человекочитаемое название, отображаемое в редакторе. -
category: Категория, к которой относится блок (например,common,formatting,widgets). -
icon: Иконка для блока, может быть строкой Dashicon или элементом SVG. -
editor_script: Путь к JavaScript-файлу, который определяет логику блока в редакторе (файлindex.jsв сгенерированной структуре). -
editor_style: Путь к CSS-файлу, стилизующему блок только в редакторе. -
style: Путь к CSS-файлу, стилизующему блок как в редакторе, так и на фронтенде.
Вся эта информация, а также атрибуты блока и другие метаданные, теперь централизованно описывается в файле block.json, который упрощает регистрацию и управление блоками.
Практическое создание статического блока: PHP и JavaScript часть
-
Генерация базовой структуры: Откройте терминал в папке
wp-content/pluginsи выполните команду:npx @wordpress/create-block my-first-blockЭто создаст новую папкуmy-first-blockс готовым плагином для вашего блока. -
Активация плагина: Перейдите в админ-панель WordPress, раздел «Плагины», и активируйте «My First Block».
-
Изучение файлов:
-
my-first-block.php: Основной файл плагина, который вызываетregister_block_type()(или используетblock.jsonдля автоматической регистрации). -
src/block.json: Манифест блока, содержащий все метаданные. -
src/index.js: Точка входа для JavaScript-логики блока. Здесь импортируются функцииeditиsave. -
src/edit.js: Определяет, как блок выглядит и ведет себя в редакторе. -
src/save.js: Определяет, как блок сохраняется на фронтенде (для статических блоков).
-
Для статического блока функция save возвращает разметку, которая будет сохранена в базе данных. Например, простой статический блок может просто выводить заголовок:
// src/save.js
import { useBlockProps } from '@wordpress/block-editor';
export default function save() {
return (
<p { ...useBlockProps.save() }>
{'Привет, это мой первый блок!'}
</p>
);
}
После сохранения изменений и перезагрузки редактора, вы сможете добавить свой новый блок «My First Block» и увидеть его в действии.
Анатомия блока: register_block_type, editor_script, editor_style
После того как мы зарегистрировали наш блок через block.json или функцию register_block_type, следующим шагом является определение его поведения и внешнего вида в редакторе. Здесь в игру вступают параметры editor_script и editor_style, которые указывают на ресурсы, загружаемые только в административной панели WordPress.
-
editor_script: Этот параметр определяет JavaScript-файл, который отвечает за логику и интерактивность блока исключительно в редакторе Gutenberg. Он содержит React-компоненты, определяющие пользовательский интерфейс блока, его элементы управления (Controls), обработку атрибутов и взаимодействие с API редактора. Например, здесь вы описываете, как блок выглядит при редактировании, какие поля ввода он предоставляет и как эти поля обновляют данные блока. Вblock.jsonон обычно указывается как"editorScript": "file:./index.js".Реклама -
editor_style: Этот параметр ссылается на CSS-файл, который применяется только к блоку в редакторе Gutenberg. Его основная задача — обеспечить, чтобы блок выглядел в редакторе максимально похоже на то, как он будет выглядеть на фронтенде, а также стилизовать любые специфические элементы управления редактора. Важно отличать его от параметраstyle, который применяется как в редакторе, так и на фронтенде.editor_styleпозволяет добавлять стили, необходимые только для удобства редактирования, не влияя на публичную часть сайта. Вblock.jsonэто выглядит как"editorStyle": "file:./index.css".
Эти два компонента критически важны для создания полноценного и удобного в использовании блока. Они позволяют разработчику точно контролировать опыт редактирования, отделяя его от отображения блока на публичной части сайта, что является ключевым принципом блочной архитектуры.
Практическое создание статического блока: PHP и JavaScript часть
После того как мы разобрали анатомию блока, пришло время применить эти знания на практике, создав наш первый статический блок. Статический блок означает, что его содержимое сохраняется непосредственно в базе данных при публикации или обновлении записи, и при отображении на фронтенде оно выводится «как есть», без дополнительной серверной обработки.
PHP-часть: Регистрация блока
Начнем с PHP-части, которая отвечает за регистрацию блока в WordPress. Мы будем использовать функцию register_block_type(), которую следует вызывать внутри хука init.
<?php
function my_first_static_block_init() {
register_block_type( __DIR__ . '/build' ); // Предполагаем, что block.json находится в папке build
}
add_action( 'init', 'my_first_static_block_init' );
В современном подходе, вместо передачи массива аргументов напрямую в register_block_type(), рекомендуется использовать файл block.json. Этот файл содержит метаданные блока (название, описание, иконка) и автоматически связывает PHP-часть с JavaScript-файлами для редактора и стилями. Если вы используете create-block, он автоматически сгенерирует block.json и структуру папок, где editorScript и editorStyle будут указывать на скомпилированные JS/CSS файлы в папке build.
JavaScript-часть: edit и save функции
Основная логика статического блока находится в JavaScript-файлах, которые определяют, как блок выглядит и ведет себя в редакторе (edit) и как его содержимое сохраняется (save).
-
editфункция: Отвечает за отображение блока в редакторе Gutenberg. Здесь мы используем компоненты React, предоставляемые WordPress, такие какRichTextдля редактируемого текста.import { registerBlockType } from '@wordpress/blocks'; import { RichText } from '@wordpress/block-editor'; import './editor.scss'; // Стили для редактора registerBlockType('my-plugin/my-static-block', { title: 'Мой Статический Блок', icon: 'align-wide', category: 'common', attributes: { content: { type: 'string', source: 'html', selector: 'h2', }, }, edit: ({ attributes, setAttributes }) => { return ( <RichText tagName="h2" value={ attributes.content } onChange={ ( newContent ) => setAttributes({ content: newContent }) } placeholder="Введите заголовок..." /> ); }, save: ({ attributes }) => { return <RichText.Content tagName="h2" value={ attributes.content } />; }, }); -
saveфункция: Определяет, как содержимое блока будет сохранено в базе данных. Для статических блоков это обычно просто вывод HTML-разметки, которая будет отображаться на фронтенде.RichText.Content— это удобный компонент для вывода сохраненного содержимогоRichText.
После компиляции JavaScript и SCSS (например, с помощью wp-scripts), файлы editor.js и style.css будут помещены в папку build, как указано в block.json или в аргументах register_block_type.
Продвинутые аспекты разработки блоков
После освоения статических блоков, где контент сохраняется непосредственно в post_content и является неизменным до следующего редактирования, перейдем к динамическим блокам. Они предлагают значительно большую гибкость, поскольку их вывод генерируется на сервере при каждом запросе страницы. Это делает их идеальными для контента, который часто меняется, зависит от данных базы данных, требует сложной логики отображения или должен быть актуальным на момент загрузки страницы.
Динамические блоки: особенности, render_callback и примеры использования
Ключевое отличие динамического блока от статического заключается в отсутствии функции save в JavaScript. Вместо этого, для генерации HTML на фронтенде используется PHP-функция render_callback, которая указывается при регистрации блока. Эта функция принимает массив атрибутов блока и содержимое блока (если оно есть) и возвращает готовую HTML-строку.
Пример регистрации с render_callback:
register_block_type('my-plugin/dynamic-block', [
'editor_script' => 'my-plugin-block-editor',
'editor_style' => 'my-plugin-block-editor',
'render_callback' => 'my_plugin_render_dynamic_block'
]);
function my_plugin_render_dynamic_block($attributes, $content) {
// Здесь можно выполнять запросы к БД, использовать шорткоды и т.д.
$title = isset($attributes['title']) ? $attributes['title'] : 'Заголовок по умолчанию';
return '<div class="my-dynamic-block"><h2>' . esc_html($title) . '</h2>' . $content . '</div>';
}
Работа с атрибутами блоков, Controls и взаимодействием с API
Атрибуты (Attributes) — это данные, которые хранятся вместе с блоком и определяют его поведение или внешний вид. Они объявляются в block.json (или в аргументах register_block_type) и доступны как в функции edit JavaScript, так и в render_callback PHP. Атрибуты могут быть различных типов (строка, число, булево, объект, массив) и иметь значения по умолчанию.
Controls (Элементы управления) — это компоненты пользовательского интерфейса в редакторе Gutenberg (например, TextControl, SelectControl, ToggleControl, InspectorControls), которые позволяют пользователям изменять значения атрибутов блока. Они используются в функции edit для создания интерактивного интерфейса.
Взаимодействие с API происходит следующим образом: когда пользователь изменяет значение через Control, это значение записывается в соответствующий атрибут блока. Gutenberg API автоматически обрабатывает сохранение этих атрибутов в базе данных (в виде HTML-комментариев внутри post_content для динамических блоков) и передает их в render_callback при отображении на фронтенде. Это обеспечивает бесшовную связь между пользовательским интерфейсом редактора и серверной логикой отображения.
Динамические блоки: особенности, render_callback и примеры использования
Динамические блоки представляют собой мощный инструмент для создания контента, который требует взаимодействия с базой данных WordPress или другими внешними источниками данных. В отличие от статических блоков, которые сохраняют свой HTML-код непосредственно в базе данных поста, динамические блоки генерируют свой вывод на лету при каждом запросе страницы. Это достигается за счет функции render_callback, которая регистрируется при определении блока на стороне PHP.
render_callback принимает массив attributes (атрибутов), которые были заданы пользователем в редакторе Gutenberg. Эти атрибуты служат входными данными для вашей серверной логики, позволяя динамически формировать HTML. Например, блок "Последние записи" может использовать атрибут numberOfPosts для определения количества отображаемых постов и category для фильтрации постов по категории. Внутри render_callback вы можете выполнить запрос к базе данных WordPress (например, с помощью WP_Query), обработать полученные данные и вернуть готовый HTML-код.
Преимущества динамических блоков:
-
Актуальность данных: Всегда отображают самую свежую информацию (например, последние комментарии, товары из каталога).
-
Гибкость: Позволяют изменять логику отображения без необходимости пересохранять все посты, где используется блок.
-
Производительность: Могут быть кэшированы на стороне сервера для оптимизации.
-
Сложная логика: Идеальны для блоков, требующих сложной серверной обработки или взаимодействия с внешними API.
Пример использования: блок, который выводит список постов определенного типа или категории, или блок, отображающий данные из пользовательских мета-полей.
Работа с атрибутами блоков, Controls и взаимодействием с API
После того как мы освоили динамические блоки, важно углубиться в механизмы, которые позволяют им (и статическим блокам) быть такими гибкими и настраиваемыми. Центральное место здесь занимают атрибуты блоков, элементы управления (Controls) и взаимодействие с API WordPress.
Атрибуты блоков
Атрибуты — это структурированные данные, которые хранятся вместе с экземпляром блока в базе данных WordPress. Они определяют содержимое, настройки и поведение блока. Каждый атрибут имеет имя, тип (например, string, number, boolean, array, object) и, опционально, источник (source), который указывает, как извлекать значение атрибута из HTML-разметки блока (для статических блоков) или как его использовать (для динамических).
Пример определения атрибута в block.json или registerBlockType:
"attributes": {
"message": {
"type": "string",
"default": "Привет, мир!"
},
"alignment": {
"type": "string",
"default": "none"
}
}
Элементы управления (Controls)
Элементы управления — это компоненты пользовательского интерфейса, которые позволяют авторам контента изменять значения атрибутов блока непосредственно в редакторе Gutenberg. Они могут располагаться в боковой панели настроек блока (Inspector Controls) или на панели инструментов блока (Block Controls).
Примеры часто используемых компонентов управления:
-
TextControl: для ввода текстовых значений. -
SelectControl: для выбора значения из предопределенного списка. -
ToggleControl: для переключения булевых значений. -
RichText: для редактирования форматированного текста.
Эти компоненты связываются с атрибутами блока, обновляя их значения при взаимодействии пользователя.
Взаимодействие с API
Для более сложного поведения и интеграции блоки могут взаимодействовать с различными API WordPress. Ключевым является wp.data — система управления состоянием, основанная на Redux, которая позволяет блокам получать и изменять данные из различных хранилищ (stores) WordPress. Это включает в себя данные о постах, медиафайлах, настройках редактора и даже данные других плагинов.
-
wp.data.select(): для чтения данных из хранилищ. -
wp.data.dispatch(): для отправки действий и изменения состояния.
Также используются wp.blocks для программной регистрации и манипуляции блоками, и wp.editor для доступа к специфическим функциям редактора. Эти API открывают широкие возможности для создания интерактивных и мощных блоков.
Публикация и управление блоками
После того как вы разработали свой кастомный блок, следующим логичным шагом является его упаковка в полноценный плагин WordPress для распространения и управления. Это позволяет легко устанавливать, активировать и обновлять ваш блок на любом сайте, обеспечивая его независимость и модульность.
Превращение блока в плагин: структура и требования
Кастомный блок Gutenberg обычно распространяется как часть плагина WordPress. Основная структура такого плагина включает:
-
Главный PHP-файл плагина: Содержит заголовок плагина (Plugin Header) и функцию
register_block_type(), которая регистрирует ваш блок в системе WordPress. Здесь же могут быть хуки для подключения скриптов и стилей. -
Директории
srcиbuild: Директорияsrcсодержит исходный код JavaScript (React) и SCSS для вашего блока. После компиляции (например, с помощьюwebpackилиRollup) оптимизированные и готовые к использованию файлы помещаются в директориюbuild. -
Файл
block.json: (для блоков, зарегистрированных черезblock.json) Этот файл является декларативным манифестом блока, определяющим его метаданные, скрипты, стили, атрибуты и другие настройки, упрощая процесс регистрации.
Отправка блока в официальный каталог WordPress и обновление
Публикация вашего блока в официальном каталоге плагинов WordPress значительно увеличивает его видимость, доверие пользователей и упрощает процесс установки. Процесс включает несколько ключевых шагов:
-
Подготовка: Убедитесь, что ваш код соответствует стандартам кодирования WordPress, безопасен, хорошо документирован и не содержит уязвимостей. Создайте файл
readme.txtв формате WordPress.org, который подробно описывает ваш плагин, его установку, часто задаваемые вопросы и содержит скриншоты. -
Отправка: Загрузите плагин через SVN-репозиторий WordPress.org. После проверки и одобрения командой WordPress.org ваш блок станет доступен для миллионов пользователей.
-
Обновления: Используйте SVN для управления версиями и выпуска обновлений. Каждое обновление должно быть тщательно протестировано и сопровождаться соответствующими изменениями в файле
readme.txtдля информирования пользователей о новых функциях или исправлениях.
Превращение блока в плагин: структура и требования
Чтобы ваш кастомный блок стал полноценным плагином WordPress, его необходимо оформить в соответствии со стандартной структурой. Основой служит корневая папка плагина, названная в честь вашего блока (например, my-custom-block). В этой папке должен находиться главный PHP-файл плагина (например, my-custom-block.php), содержащий стандартные заголовки плагина WordPress, такие как Plugin Name, Version, Description и Author.
Именно в этом главном файле происходит регистрация вашего блока с помощью функции register_block_type(). Если вы используете современный подход с block.json, этот файл будет указывать на него. Для блоков, созданных с помощью create-block, структура уже оптимизирована: исходные файлы JavaScript и SCSS находятся в папке src, а скомпилированные версии (готовые к использованию) — в папке build. Убедитесь, что пути к скриптам и стилям в register_block_type() или block.json корректно указывают на эти скомпилированные ресурсы. Это обеспечивает правильную загрузку блока как в редакторе, так и на фронтенде.
Отправка блока в официальный каталог WordPress и обновление
После того как ваш блок успешно преобразован в плагин, следующим логичным шагом является его распространение. Официальный каталог плагинов WordPress.org — это основной канал для публикации. Процесс начинается с создания аккаунта разработчика и отправки плагина на ревью. Ключевым элементом является файл readme.txt, который должен соответствовать стандарту WordPress.org и содержать важную информацию: описание, инструкции по установке, FAQ, скриншоты и, что особенно важно, Stable tag и Changelog.
После одобрения вам будет предоставлен доступ к SVN-репозиторию. Для публикации обновлений необходимо увеличить номер версии в главном файле плагина и в Stable tag файла readme.txt, а также добавить соответствующие записи в Changelog. Затем вы загружаете обновленные файлы в SVN-репозиторий, и WordPress.org автоматически обрабатывает и распространяет новую версию вашего блока-плагина среди пользователей.
Заключение
На протяжении этого исчерпывающего учебника мы совершили глубокое погружение в мир блоков WordPress Gutenberg. Мы начали с фундаментальных концепций, изучив, что такое редактор Gutenberg и почему блочный подход стал краеугольным камнем современной разработки на WordPress. Затем мы подготовили необходимый инструментарий и освоили базовые навыки, чтобы перейти к практическому созданию нашего первого статического блока, шаг за шагом разбирая его анатомию и принципы работы.
Мы не остановились на достигнутом, углубившись в продвинутые аспекты: освоили динамические блоки, научились эффективно работать с атрибутами и элементами управления, а также взаимодействовать с API Gutenberg. Кульминацией нашего пути стало понимание процесса превращения блока в полноценный плагин и его публикации в официальном каталоге WordPress, что открывает двери для широкого распространения ваших решений.
Теперь, обладая этими знаниями и практическими навыками, вы готовы не просто использовать Gutenberg, но и активно формировать его будущее, создавая мощные, гибкие и интуитивно понятные решения. Пусть этот учебник станет отправной точкой для ваших дальнейших экспериментов и инноваций в экосистеме WordPress.