Содержание статьи
Удалите поддержку функции custom-color-palette в functions.php, если она реализована через add_theme_support( \'editor-color-palette\', [...] )
. Новый визуальный движок игнорирует старую систему описания палитры. В противном случае – сбой отображения интерфейса гарантирован.
Старый API для стилей редактора больше не применяется. Файл editor-style.css
игнорируется. Не тратьте время на попытки его переиспользовать. Вместо этого подключайте кастомный стиль с помощью add_editor_style( \'style-editor.css\' )
, но только при условии, что внутри он работает с глобальными CSS переменными, а не фиксированными значениями.
Важно: все классы, добавленные вручную через
editor-style.css
, больше не работают. Используйтеtheme.json
с четкой структурой настроек.
Файл theme.json
– единственный источник правды. Если он отсутствует, поведение интерфейса становится непредсказуемым. Но и здесь всё неочевидно: одно неверное поле – и исчезают отступы, шрифты, кнопки.
Хотите задать отступы между блоками? Не прописывайте margin
напрямую в CSS. Используйте spacing
внутри theme.json
. Пример корректной конфигурации:
{
\"spacing\": {
\"blockGap\": \"2rem\"
}
}
Обнаружили, что у вас пропали кнопки редактирования в панели блоков? Проверьте поддержку align
в структуре: она теперь управляется не через add_theme_support()
, а через блок layout
в theme.json
.
Внимание! Старые фильтры типа
use_block_editor_for_post
уже не отключают новый редактор. Используйтеremove_filter( \'use_block_editor_for_post\', \'__return_true\' )
только в связке с принудительной загрузкой классического редактора.
Файл style.css
должен содержать только описание и базовую типографику. Всё остальное – в отдельные модули. Структура должна быть минимальной, иначе система наследования глобальных стилей рушится.
Переход на новый интерфейс – не косметическая правка, а перепрошивка архитектуры. Каждый параметр должен быть перепроверен. Ленивая адаптация приведёт к неожиданным багам, разметка начнёт рассыпаться, блоки исчезнут. Всё станет странным. И быстро.
Не тестируете визуальный интерфейс на уровне JSON-структуры? Проблемы неизбежны. Никакие CSS-костыли уже не помогут. Только переосмысление. Только структура. Только декларативный подход.
Как подготовить стили темы к редактору блоков Gutenberg
Подключите файл editor-styles.css
через функцию add_editor_style()
. Без этого редактор не унаследует оформление с фронтенда. Не работает? Проверьте путь и убедитесь, что в файле нет ссылок на нестандартизированные шрифты или внешние библиотеки, которые не грузятся в админке.
Используйте add_theme_support(\'editor-styles\')
вместе с add_editor_style()
. Без первого вызова второй игнорируется. Парадокс? Нет. Просто документация отстаёт от логики ядра.
Избегайте глобальных селекторов типа *
или body
. Они ломают вложенные блоки. Работайте строго в рамках классов WordPress, например, .wp-block
, .editor-styles-wrapper
.
Для стилизации блоков используйте theme.json
. Секция \"styles\"
позволяет задать отступы, цвета, типографику без дублирования CSS. Пример настройки отступов:
{
\"styles\": {
\"spacing\": {
\"padding\": {
\"top\": \"2rem\",
\"bottom\": \"2rem\"
}
}
}
}
Важно: Если не используете
theme.json
, стилизация может конфликтовать с системными переменными и ломать интерфейс редактора.
Тестируйте каждую правку в редакторе, а не на фронтенде. Многие классы появляются только в админке, и поведение блоков отличается.
Для типографики подключайте переменные через theme.json
или напрямую в editor-styles.css
. Пример:
.editor-styles-wrapper p {
font-size: 18px;
line-height: 1.6;
}
Не используйте !important
. Это грубая сила, которая нарушает каскад. Лучше уточните селектор. Не работает? Сравните specificity. Или проверьте, не перекрывает ли стиль какой-нибудь плагин.
Помните: редактор блоков – это не фронтенд. Это отдельная среда с собственным DOM и ограничениями. Игнорировать это – ошибка.
Обязательно активируйте поддержку цветов и градиентов, если они используются. Иначе пользователь увидит интерфейс, который не совпадает с дизайном. Используйте:
add_theme_support(\'editor-color-palette\', [...]);
add_theme_support(\'editor-gradient-presets\', [...]);
Не полагайтесь на автозагрузку стилей блоков. Пропишите явное включение через enqueue_block_editor_assets()
и подключите только нужные файлы. Всё лишнее – балласт. Рендер тормозит? Смотрите в сторону CSS-минимизации.
И наконец, проверьте, как отображаются вложенные блоки, например columns
или group
. Если один стиль рушит всю иерархию – это не редактор виноват. Это вы.
Какие функции нужно добавить в файл functions.php для поддержки Gutenberg
Подключайте поддержку редактора стилей: без этого кастомные CSS не будут применяться к блокам внутри редактора.
add_theme_support( \'editor-styles\' );
add_editor_style( \'editor-style.css\' );
Отключите использование шрифтов и стилей из ядра, если они конфликтуют с дизайном:
remove_action( \'wp_enqueue_scripts\', \'wp_enqueue_global_styles\' );
remove_action( \'wp_body_open\', \'wp_global_styles_render_svg_filters\' );
Разрешите использование кастомной палитры цветов:
add_theme_support( \'editor-color-palette\', array(
array(
\'name\' => \'Основной\',
\'slug\' => \'primary\',
\'color\' => \'#0057ff\',
),
array(
\'name\' => \'Второстепенный\',
\'slug\' => \'secondary\',
\'color\' => \'#e2e2e2\',
),
) );
Разрешите поддержку выравнивания по ширине: full и wide без этого просто игнорируются блоками.
add_theme_support( \'align-wide\' );
Внимание! Без
add_theme_support( \'align-wide\' )
блоки типа «Обложка» или «Группа» будут ограничены только стандартной шириной контейнера.
Включите поддержку кастомных единиц отступов и размеров:
add_theme_support( \'custom-spacing\' );
add_theme_support( \'custom-units\', \'px\', \'em\', \'rem\', \'%\' );
Разрешите поддержку пользовательских шрифтов:
add_theme_support( \'custom-font-sizes\', array(
array(
\'name\' => \'Мелкий\',
\'size\' => 12,
\'slug\' => \'small\'
),
array(
\'name\' => \'Стандартный\',
\'size\' => 16,
\'slug\' => \'normal\'
),
array(
\'name\' => \'Крупный\',
\'size\' => 24,
\'slug\' => \'large\'
)
) );
Поддержка функции встроенных шаблонов блоков:
add_theme_support( \'block-templates\' );
Важно помнить: без
block-templates
шаблоны на уровне файлов с расширением.html
в папкеblock-templates/
просто игнорируются. Пустота.
Нужна чистота? Уберите ненужные стили:
add_action( \'wp_enqueue_scripts\', function() {
wp_dequeue_style( \'classic-theme-styles\' );
}, 20 );
И наконец. Блокируйте автоматические стили, если нужна полная кастомизация:
add_theme_support( \'disable-custom-colors\' );
add_theme_support( \'disable-custom-font-sizes\' );
add_theme_support( \'disable-custom-gradients\' );
Это не просто конфигурация. Это контроль. Хаос блоков не должен влиять на внешний вид. Все, что вы не задали явно – будет задано за вас. Вопрос: вы доверяете это ядру?
Как адаптировать пользовательские шаблоны страниц под новые блоки редактора
Удалите использование функции the_content()
в нестандартных местах. Вместо этого подключите поддержку блоков через post-content
в template-parts
и строго соблюдайте структуру блоков.
Важно: если шаблон использует жёстко заданные контейнеры, они могут конфликтовать с разметкой блоков. Удаляйте избыточные
<div>
и обертки без классов редактора!
Добавьте в functions.php
поддержку шаблонов блоков:
add_theme_support( \'block-templates\' );
Создайте файл шаблона в директории block-templates
с названием, например, custom-page.html
. Он должен содержать строгую HTML-разметку блоков:
<!-- wp:group -->
<!-- wp:heading {\"level\":1} -->
<h1>Заголовок страницы</h1>
<!-- /wp:heading -->
<!-- wp:post-content /-->
<!-- /wp:group -->
Старые PHP-шаблоны несовместимы с редактором блоков по умолчанию. Переписывайте их на HTML, строго по синтаксису. Нарушения вызовут ошибку визуализации или поломку структуры документа.
Проверяйте структуру блоков в режиме Code Editor. Один лишний пробел – и всё рушится. Разметка не терпит хаоса. Одна ошибка – и вместо страницы – белый экран.
Помните: не используйте
get_header()
иget_footer()
в HTML-шаблонах блоков. Эти вызовы работают только в PHP-шаблонах и конфликтуют с концепцией Full Site Editing.
- Размещайте шаблоны только в
block-templates
илиblock-template-parts
- Переходите на
theme.json
для управления отступами, ширинами, типографикой - Удалите кастомные поля оформления, они не работают с редактором блоков
- Проверяйте совместимость блоков с классами сетки, особенно если используется Bootstrap
Сложный момент – миграция логики. Если шаблон использует ACF
или meta
-поля, переносите их в InnerBlocks
или создавайте собственные блоки через block.json
.
Заменяйте любые template_include
фильтры на templateParts
в HTML-структуре. Блоковая система работает по другому принципу, через декларацию, а не логику.
Не верьте документации без проверки – она не отражает всех багов и нюансов. Проверяйте всё на тестовой установке. Бэкап обязателен. Работает – не трогай. Не работает – перепиши с нуля.
Обработка конфликтов CSS между Gutenberg и текущей темой
Сначала – отключите встроенные стили конструктора, если они мешают. Используйте хук remove_theme_support( \'wp-block-styles\' );
внутри functions.php
. Это избавит от избыточных правил, которые ломают визуал в админке и на фронтенде.
Дальше – проверьте стили блоков. Некоторые классы вроде .wp-block
, .wp-block-image
, .alignwide
создают конфликты с базовой сеткой. Решение – принудительно переопределить или сбросить их через кастомные правила:
.wp-block { all: unset; }
.wp-block-image img { max-width: 100%; height: auto; }
.alignwide { margin-left: auto; margin-right: auto; width: 100%; }
Нестыковка типографики – отдельная проблема. Gutenberg использует переменные шрифтов, например --wp--preset--font-size--large
. Если таких переменных нет в вашей сборке – получите обрывки верстки. Подключите кастомный файл editor-styles.css
и пропишите необходимые переменные вручную:
:root {
--wp--preset--font-size--large: 1.5rem;
--wp--preset--color--primary: #000;
}
Именно несостыковка переменных и предустановок чаще всего делает редактор непригодным к использованию. Синхронизируйте их с фронтендом.
Важно! Не пытайтесь подстраивать весь CSS под Gutenberg – лучше заблокируйте лишние блоки и используйте только те, которые визуально совпадают с макетом.
Еще один баг: стили кнопок. Gutenberg по умолчанию тянет .wp-block-button__link
с своими отступами и цветами. Отбейте их через конкретное переопределение:
.wp-block-button__link {
padding: 0.5em 1em;
background-color: #222;
color: #fff;
text-decoration: none;
}
На этом этапе выявите все дублирующие и конфликтные правила. Используйте DevTools. Смотрите computed styles и specificity. Отключайте по одному. Фиксируйте только то, что реально ломает верстку.
Внимание! Не забудьте протестировать внешний вид на фронтенде и в редакторе. Они используют разные DOM-структуры – и то, что работает снаружи, может быть сломано внутри.
И последнее. Если используете кастомные блоки – избегайте глобальных классов. Префиксуйте их. Пример:
.mytheme-block-quote { font-style: italic; }
Без изоляции вы получите кашу. Один блок перезапишет другой. Глобальный хаос. Предотвращайте это заранее.