В современном 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 важно учитывать несколько моментов:
- Производительность. Подключение с CDN ускоряет загрузку, особенно если CDN широко распространён и кэшируется браузерами.
- Безопасность. Используйте HTTPS, чтобы избежать предупреждений безопасности.
- Версионирование. Чётко указывайте версию CSS, чтобы избежать проблем при обновлении.
- Конфликты стилей. Внешние библиотеки могут переопределять глобальные стили, поэтому тщательно тестируйте блок на сайте.
Для локальных стилей можно использовать минификацию и разделение на части, загружая только необходимые.
Подключение стилей непосредственно в 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 для первых отрисовок, а остальные стили загружайте асинхронно. Это улучшит скорость загрузки сайта.