Как добавить поддержку виджетов в редактор Gutenberg WordPress

Редактор 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. Используя приведённые примеры кода, плагины и рекомендации, вы сможете создать удобный интерфейс для работы с виджетами, объединяя классический функционал и современные блоки. Это особенно полезно для разработчиков тем и плагинов, которые хотят расширить возможности пользователей без потери гибкости.

Оптимизация загрузки изображений в WordPress с помощью WP Rocket
12.01.2026
Как установить и настроить WooCommerce для интернет-магазина на WordPress
30.11.2025
Оптимизация загрузки изображений в WordPress с поддержкой WebP
08.04.2026
Создание собственного REST API эндпоинта в WordPress
27.11.2025
Как использовать фильтр woocommerce_order_item_product для добавления пользовательских данных к товарам заказа в WooCommerce
19.05.2026