Как создать блок с поддержкой внешних стилей в Gutenberg WordPress

В современном WordPress разработчики часто сталкиваются с задачей создания собственных блоков для Gutenberg, которые должны корректно интегрироваться в дизайн сайта и использовать внешние CSS-файлы или библиотеки стилей. В этой статье подробно разберём, как создать Gutenberg блок с поддержкой подключения внешних стилей — например, из CDN или локальных файлов. Это позволит вам отделить стили блока от основного CSS темы и управлять ими отдельно, облегчая поддержку и кастомизацию.

Почему важна поддержка внешних стилей в Gutenberg блоках

По умолчанию стили Gutenberg блоков либо пишутся внутри самого блока, либо добавляются в стили темы. Но бывают ситуации, когда нужно использовать сторонние CSS-библиотеки (например, Animate.css, Bootstrap, Tailwind) или собственные файлы стилей с большим набором правил. Подключение таких стилей напрямую в блок позволит:

  • Избежать захламления глобальных стилей темы;
  • Обеспечить возможность обновлять стили независимо от темы;
  • Поддерживать повторное использование блоков в разных проектах без конфликтов;
  • Уменьшить размер основного CSS за счёт ленивой загрузки стилей блоков.

Далее рассмотрим, как это сделать правильно.

Регистрация блока с подключением внешних стилей на примере плагина

Для создания блока с внешними стилями рекомендуем зарегистрировать блок в плагине. Ниже пример кода, который регистрирует блок и подключает CSS из локального файла и из внешнего CDN.

<?php
// Функция регистрации блока с подключением стилей
function wpblock_register_external_style_block() {
    // Регистрируем CSS для редактора (backend)
    wp_register_style(
        'wpblock-external-style-editor',
        plugin_dir_url(__FILE__) . 'css/block-editor.css',
        array(),
        '1.0.0'
    );

    // Регистрируем CSS для фронтенда (frontend) — локальный
    wp_register_style(
        'wpblock-external-style-frontend',
        plugin_dir_url(__FILE__) . 'css/block-style.css',
        array(),
        '1.0.0'
    );

    // Регистрируем CSS из CDN (например, Animate.css)
    wp_register_style(
        'wpblock-animate-css',
        'https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css',
        array(),
        '4.1.1'
    );

    // Регистрируем блок с подключением стилей
    register_block_type('wpblock/external-style-block', array(
        'editor_style' => array('wpblock-external-style-editor', 'wpblock-animate-css'),
        'style' => array('wpblock-external-style-frontend', 'wpblock-animate-css'),
        'render_callback' => 'wpblock_render_external_style_block'
    ));
}
add_action('init', 'wpblock_register_external_style_block');

// Функция рендера блока (если динамический)
function wpblock_render_external_style_block($attributes) {
    return '<div class="wpblock-external-block animate__animated animate__fadeIn">Это блок с внешними стилями</div>';
}
?>

В этом примере:

  • Мы подключаем локальные стили для редактора и фронтенда;
  • Подключаем внешний CSS Animate.css по CDN;
  • Используем render_callback для динамического вывода блока (при необходимости);
  • В классы блока включаем классы из Animate.css для анимации.

Особенности подключения внешних стилей из CDN в Gutenberg блоках

При подключении внешних стилей через CDN важно учитывать несколько моментов:

  1. Производительность. Подключение с CDN ускоряет загрузку, особенно если CDN широко распространён и кэшируется браузерами.
  2. Безопасность. Используйте HTTPS, чтобы избежать предупреждений безопасности.
  3. Версионирование. Чётко указывайте версию CSS, чтобы избежать проблем при обновлении.
  4. Конфликты стилей. Внешние библиотеки могут переопределять глобальные стили, поэтому тщательно тестируйте блок на сайте.

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

Подключение стилей непосредственно в JavaScript блоков Gutenberg

Если ваш блок написан с использованием React и JSX, можно подключить стили напрямую в JS файле блока. Рассмотрим пример с ESNext и wp-scripts:

import './block-style.css';

const { registerBlockType } = wp.blocks;

registerBlockType('wpblock/external-style-js-block', {
    title: 'Блок с внешними стилями в JS',
    icon: 'smiley',
    category: 'widgets',
    edit() {
        return <div className="wpblock-js-style animate__animated animate__bounce">Редактор блока</div>;
    },
    save() {
        return <div className="wpblock-js-style animate__animated animate__bounce">Фронтенд блока</div>;
    }
});

Для подключения внешних CSS из CDN в этом случае используйте wp_enqueue_style в PHP или добавляйте ссылку в enqueue_block_assets. Это позволяет гибко управлять стилями как на фронтенде, так и в редакторе.

Использование хуков WordPress для подключения стилей блоков

Рекомендуется подключать стили в хуках enqueue_block_assets (для фронтенда и редактора) или enqueue_block_editor_assets (только для редактора). Например:

function wpblock_enqueue_block_assets() {
    wp_enqueue_style('wpblock-external-style-frontend');
    wp_enqueue_style('wpblock-animate-css');
}
add_action('enqueue_block_assets', 'wpblock_enqueue_block_assets');

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

Полезные плагины для работы с блоками и стилями в Gutenberg

Для более продвинутого управления стилями в Gutenberg можно использовать плагины:

  • Clearfy Pro — оптимизация загрузки стилей и скриптов;
  • WPGPT — интеллектуальное создание блоков на основе ИИ;
  • Тема Reboot — современная тема с поддержкой кастомных блоков и стилей.

Отладка и тестирование блоков с внешними стилями

Чтобы убедиться, что внешние стили подключены и работают корректно, используйте инструменты разработчика браузера:

  • Проверьте, что CSS-файлы загружаются без ошибок;
  • Просмотрите применённые стили к элементам блока;
  • Проверьте совместимость с другими стилями темы и плагинов;
  • Используйте console.log в JS для отладки поведения блока.

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

Советы по оптимизации

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

Как ограничить доступ к REST API WordPress только для авторизованных пользователей
16.12.2025
Как создать динамический контейнер для Gutenberg блоков с поддержкой внешних данных
22.01.2026
Как добавить поддержку PHP 8.2 в WordPress и проверить совместимость плагинов
10.02.2026
Как создать блок с встроенным отладчиком в Gutenberg WordPress
27.03.2026
WooCommerce: решение проблемы неработающего AJAX добавления товара в корзину
15.05.2026

С появлением Gutenberg в WP появились и блоки. Однако не всем по душе новая версия редактора.