Редактор Gutenberg в WordPress с каждым обновлением становится всё более мощным и гибким инструментом для создания контента. Однако у многих разработчиков и владельцев сайтов возникает задача — добавить поддержку виджетов в редактор блоков, чтобы упростить управление размещением и настройкой виджетов прямо из интерфейса Gutenberg. В этой статье мы подробно разберём, как реализовать такую поддержку, рассмотрим полезные плагины и приведём примеры кода для создания собственных решений.
Что такое виджеты в WordPress и зачем их поддержка в Gutenberg
Виджеты — это небольшие блоки функционала, которые можно размещать в сайдбарах, футерах и других областях темы. Традиционно управление виджетами происходит через классическую панель администратора, которая не связана с редактором страниц. Это порой неудобно, особенно когда хочется видеть расположение блоков и виджетов в одном интерфейсе.
Поддержка виджетов в Gutenberg позволяет:
- Добавлять и настраивать виджеты прямо на страницах и в постах через блоки.
- Упрощать визуальное редактирование структуры сайта.
- Использовать единый интерфейс для работы с контентом и дополнительными элементами.
Начиная с WordPress 5.8 появилась новая область «Виджеты» на базе редактора блоков, но для интеграции виджетов в собственные блоки или шаблоны нужна дополнительная настройка.
Как добавить поддержку виджетов в Gutenberg через код
Для начала нужно подключить поддержку виджетов в теме или плагине. В functions.php темы или в основном файле плагина добавьте следующий код:
function wpplugin_add_widget_support() {
add_theme_support( 'widgets-block-editor' );
}
add_action( 'after_setup_theme', 'wpplugin_add_widget_support' );Этот хук включает поддержку виджетов в редакторе блоков. Теперь при переходе в раздел «Виджеты» в админке вы увидите привычные зоны с возможностью добавления блоков.
Создание пользовательского блока для вывода виджета
Вы также можете создать собственный блок, который будет рендерить определённый виджет. Например, если у вас есть кастомный виджет с идентификатором custom_widget_id, создадим блок для его вывода.
function wpplugin_register_widget_block() {
register_block_type( 'wpplugin/widget-block', [
'render_callback' => 'wpplugin_render_widget_block',
'attributes' => [
'widgetId' => [
'type' => 'string',
'default' => '',
],
],
] );
}
add_action( 'init', 'wpplugin_register_widget_block' );
function wpplugin_render_widget_block( $attributes ) {
if ( empty( $attributes['widgetId'] ) ) {
return '';
}
ob_start();
the_widget( $attributes['widgetId'] );
return ob_get_clean();
}Этот код регистрирует блок, который принимает атрибут с ID виджета и выводит его содержимое. Чтобы добавить блок в Gutenberg, потребуется создать JavaScript часть с UI выбора виджета — это можно сделать с помощью @wordpress/scripts и React, но для простоты можно использовать уже готовые плагины.
Полезные плагины для работы с виджетами в Gutenberg
Для расширения возможностей работы с виджетами в редакторе блоков рекомендуем следующие плагины:
- Widget Blocks — позволяет превратить стандартные виджеты в блоки Gutenberg для вставки на страницы.
- Clearfy Pro — плагин для оптимизации WordPress, который также улучшает работу с виджетами и блоками.
- Block Widgets — плагин, расширяющий стандартные возможности виджетов с использованием блоков.
Использование этих плагинов поможет упростить интеграцию виджетов в редактор Gutenberg без глубокого программирования.
Пример использования виджетов в кастомной теме с поддержкой Gutenberg
Если вы разрабатываете тему на базе современных технологий, можно совместить поддержку виджетов и шаблоны Full Site Editing (FSE). Для этого добавьте в файл functions.php:
function wpplugin_register_sidebars() {
register_sidebar([
'name' => 'Основной сайдбар',
'id' => 'primary-sidebar',
'description' => 'Сайдбар для отображения виджетов',
'before_widget' => '<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
]);
}
add_action( 'widgets_init', 'wpplugin_register_sidebars' );Для отображения в шаблоне используйте функцию:
if ( is_active_sidebar( 'primary-sidebar' ) ) {
dynamic_sidebar( 'primary-sidebar' );
}При включенной поддержке блоков виджеты можно будет добавлять и редактировать через Gutenberg, а также встраивать в шаблоны как блоки.
Советы по оптимизации и безопасности при работе с виджетами в Gutenberg
Работа с виджетами в редакторе блоков требует учитывать некоторые моменты для стабильности и безопасности сайта:
- Проверяйте наличие и корректность виджетов перед выводом, чтобы избежать ошибок PHP.
- Используйте nonce и проверки прав пользователя при динамическом обновлении виджетов через AJAX.
- Оптимизируйте загрузку внешних скриптов и стилей, чтобы не замедлять работу редактора.
- Тестируйте работу виджетов на мобильных устройствах и в разных браузерах.
Также рекомендуем использовать плагины кэширования и оптимизации, например Clearfy Pro, для автоматической оптимизации загрузки и безопасности.
Заключение
Добавление поддержки виджетов в редактор Gutenberg — это реальная задача, которая значительно улучшит управление сайтом на WordPress. Используя приведённые примеры кода, плагины и рекомендации, вы сможете создать удобный интерфейс для работы с виджетами, объединяя классический функционал и современные блоки. Это особенно полезно для разработчиков тем и плагинов, которые хотят расширить возможности пользователей без потери гибкости.