В современном WordPress редакторе Gutenberg работа с блоками стала стандартом для создания контента. Однако часто возникает задача назначить уникальные CSS-классы определённым блокам для точечной стилизации, особенно если вы используете тему GeneratePress, где важна аккуратная и быстрая кастомизация.
Почему важно добавлять уникальные классы к блокам Gutenberg
Уникальные CSS-классы позволяют:
- Изолировать стили для конкретных блоков без влияния на другие элементы;
- Создавать сложные визуальные эффекты и анимации;
- Упрощать поддержку кода и последующие доработки;
- Обеспечивать совместимость с плагинами и дополнительными скриптами.
В теме GeneratePress, где упор сделан на производительность и минимализм, правильное добавление классов помогает сохранить чистоту и лёгкость кода.
Добавление уникальных классов через интерфейс Gutenberg
Начнём с простого способа, который доступен из коробки в Gutenberg:
- Выберите нужный блок в редакторе WordPress.
- В правой панели настроек найдите вкладку «Дополнительно».
- В поле «Дополнительные CSS-классы» введите уникальное имя, например
generatepress-custom-block. - Сохраните изменения и перейдите в файл стилей темы, чтобы прописать нужные правила.
Этот метод удобен, но может быть трудозатратным при работе с большим количеством блоков или при необходимости динамического добавления классов.
Автоматическое добавление уникальных классов с помощью кода в GeneratePress
Для автоматизации можно использовать фильтр WordPress, который добавит классы к блокам при их выводе на фронтенде. В файле functions.php вашей дочерней темы GeneratePress добавьте следующий код:
function generatepress_add_custom_class_to_gutenberg_block( $block_content, $block ) {
// Например, добавим класс для блока 'core/paragraph'
if ( isset( $block['blockName'] ) && 'core/paragraph' === $block['blockName'] ) {
// Проверяем наличие уже существующих классов
$class_to_add = 'generatepress-paragraph-custom';
if ( strpos( $block_content, 'class="' ) !== false ) {
$block_content = str_replace( 'class="', 'class="' . $class_to_add . ' ', $block_content );
} else {
// Если классов нет, добавляем атрибут class
$block_content = preg_replace( '/<p/', '<p class="' . $class_to_add . '"', $block_content, 1 );
}
}
return $block_content;
}
add_filter( 'render_block', 'generatepress_add_custom_class_to_gutenberg_block', 10, 2 );Этот код добавит класс generatepress-paragraph-custom ко всем параграфам. Вы можете адаптировать условие, чтобы обрабатывать другие типы блоков, например, изображения или заголовки.
Расширение: добавление классов по атрибутам блока
Если нужно более гибко управлять классами, можно считывать атрибуты блока и добавлять классы в зависимости от них. Пример:
function generatepress_dynamic_class_by_attributes( $block_content, $block ) {
if ( isset( $block['attrs']['customClassName'] ) ) {
$custom_class = sanitize_html_class( $block['attrs']['customClassName'] );
if ( strpos( $block_content, 'class="' ) !== false ) {
$block_content = str_replace( 'class="', 'class="' . $custom_class . ' ', $block_content );
} else {
$block_content = preg_replace( '/<([a-z0-9]+)/', '<$1 class="' . $custom_class . '"', $block_content, 1 );
}
}
return $block_content;
}
add_filter( 'render_block', 'generatepress_dynamic_class_by_attributes', 10, 2 );Для использования этого подхода нужно в редакторе добавить дополнительный атрибут customClassName через расширенный JavaScript, что подходит для разработчиков плагинов и тем.
Пример кастомизации стилей с уникальными классами
После того как класс добавлен, пропишем стили в файле style.css дочерней темы:
.generatepress-paragraph-custom {
background-color: #f0f8ff;
padding: 15px;
border-left: 4px solid #0073aa;
font-style: italic;
}Такой параграф сразу выделится на странице и будет легко управляться через CSS без затрагивания других элементов.
Полезные плагины для работы с кастомными классами в Gutenberg и GeneratePress
Для удобства можно использовать плагины, расширяющие возможности Gutenberg:
- Advanced Gutenberg — добавляет дополнительные настройки к блокам, включая возможность добавления классов и атрибутов.
- Block Lab — позволяет создавать собственные блоки с предустановленными классами и стилями.
- Clearfy Pro (с подробнее на wpshop.ru) — оптимизирует работу WordPress и добавляет расширенные настройки безопасности и кастомизации, в том числе для блоков.
Советы по оптимизации и поддержке кода
При добавлении уникальных классов старайтесь придерживаться следующих рекомендаций:
- Используйте префиксы, связанные с темой или проектом, например,
gp-илиgeneratepress-, чтобы избежать конфликтов. - Пишите читаемый и документированный код, особенно если планируете передавать проект другим разработчикам.
- Тестируйте стили в разных браузерах и на мобильных устройствах.
- Используйте дочернюю тему GeneratePress для внесения изменений — это сохранит возможность обновлять основную тему без потери правок.