Содержание статьи
Отключите всё лишнее. Оставьте только текст и структуру. Новый шаблон отображения блоков полностью перестраивает визуальную иерархию. Верхняя панель больше не фиксирована – она скрывается автоматически, уступая место содержимому. Горячие клавиши работают, но привычного UI больше нет.
Контекстное меню выдвигается по наведению. Панель настроек перемещена вниз. Элементы управления блоками не занимают место в вёрстке, а появляются только при редактировании. Всё, что раньше отвлекало, теперь исчезает до первого взаимодействия.
Реакция на ширину экрана – агрессивная. При переходе к узкому окну отображение меняется не только визуально, но и функционально: скрываются метабоксы, исчезают вспомогательные кнопки, передвигаются элементы управления. В мобильной версии невозможно открыть некоторые меню – они заменены свайпом и жестами.
Важно помнить: любые кастомизации через JS или CSS могут конфликтовать с новой логикой построения макета. Проверьте темы на совместимость до активации!
Форма навигации изменилась. Структурное дерево блоков открывается по нажатию, а не отображается постоянно. Это экономит место, но требует переобучения. Иерархия блоков отображается в модальном окне, а не сбоку.
Если раньше оборачивание контента в секции происходило через кнопки интерфейса, то теперь нужно использовать сочетание клавиш Cmd + Opt + G
или Ctrl + Alt + G
. Визуального редактора групп больше нет – только структура.
Режим темной темы включается автоматически, если устройство использует тёмную палитру. Принудительная активация через фильтр невозможна – используется системное поведение. Все нестандартные цветовые схемы тем теперь должны быть адаптированы под это поведение вручную.
Внимание! Некоторые устаревшие плагины, использующие jQuery UI, ломают логику позиционирования и могут вызывать мерцание блоков при редактировании. Тестируйте в песочнице.
Разработчикам придётся переписать обёртки для block controls: компонент <BlockControls>
теперь поддерживает только ограниченное число пропсов. Логика выведения toolbar изменилась – элементы не оборачиваются, а передаются напрямую.
Экспериментальный флаг focusMode
теперь активирован по умолчанию. Его отключение возможно только через пользовательский фильтр: add_filter( \'block_editor_settings_all\', function( $settings ) { $settings[\'focusMode\'] = false; return $settings; } );
Итог: это не редизайн. Это новый подход. Привычных якорей больше нет. Всё построено вокруг внимания к содержимому. И если вы используете нестандартные Gutenberg-блоки – перепроверьте каждый. Потому что теперь даже отступы живут по другим правилам.
Как изменится структура элементов Дзен-режима на мобильных устройствах
Контентная область должна занимать 100% ширины. Без отступов. Без теней. Только контрастный текст и фон. Примеры разметки:
<main class=\"zen-content\">
<article>...</article>
</main>
Меню внизу? Нет. Это не приложение. Меню в хедере, но фиксированное, с минимальным количеством пунктов. Используйте position: sticky
, а не fixed
, иначе получите баги при скролле внутри вложенных блоков.
Важно: Не используйте более одного уровня вложенности в списках навигации – мобильные пользователи не разворачивают аккордеоны на касание. Они уходят.
Интерактивные элементы увеличивайте до 48px на 48px. Пальцы не щупальца. Не менее 8px отступа между кнопками. Пример:
button {
width: 48px;
height: 48px;
margin-right: 8px;
}
Заголовки не масштабируйте автоматически. Используйте clamp или media-запросы. Мобильные экраны не прощают переполнения. Пример:
h1 {
font-size: clamp(1.5rem, 5vw, 2.5rem);
}
Где кнопка фокуса? Где выделение активного элемента? Нет – провал. Используйте :focus-visible
и outline
, не оставляйте на авось.
Внимание! Если вы используете плагины, отключайте их скрипты и стили на мобильных через
wp_dequeue_script
иwp_dequeue_style
. Иначе – фриз, лаги, вылеты.
Типографика: максимум 60 символов в строке. Центрирование по ширине – только для заголовков. Тело текста – строго по левому краю. Выравнивание по ширине ломает ритм чтения.
И последнее. Зачем нужны огромные отступы в мобильной версии? Никаких padding: 40px
. Работайте с 1rem
и процентами. Всё остальное – мусор.
Что разработчики должны учесть при кастомизации адаптивного интерфейса
Начните с ограничения точек перелома. Не полагайтесь на каждый пиксель, не создавайте десятки медиазапросов. Поддерживайте 3–4 ключевые ширины: мобильная, планшетная, десктоп, ультраширокая. Всё остальное – компромисс.
Учитывайте конкретную структуру админки. Панель управления часто содержит sidebar с фиксированной шириной. Если вы кастомизируете блоки, не забывайте учитывать #adminmenu
и его влияние на контейнеры.
Контейнеры внутри Gutenberg не ведут себя как обычные flex-элементы. Они ограничены внутренними правилами редактора. Это мешает кастомизации и вызывает баги при смене размеров окна. Используйте @media (min-width)
только для внешнего обёртывания, не для вложенных блоков.
Важно! Любое изменение сетки должно учитывать редактор шаблонов и предпросмотр записей. Там отдельные стили и конфликты по ширине неизбежны.
Медиа-запросы внутри block.json не работают. Это ловушка. Все адаптивные стили должны быть вынесены в отдельный CSS и подключены через wp_enqueue_style
с условием is_admin()
или is_block_editor()
, иначе вы получите кашу.
Помните! Если вы используете кастомные поля с интерфейсом ACF или MetaBox – обязательно тестируйте адаптивность при их наличии. Они могут перекрывать ваш UI или ломать вёрстку.
SVG-иконки ведут себя нестабильно. При масштабировании они теряют четкость, особенно при использовании в блоках навигации. Отдавайте предпочтение dashicons
или кастомным иконам через wp_register_style
.
Проваливающийся dropdown в навигации? Это не баг, это результат неучтённой высоты панели уведомлений. В редакторе она фиксирована, но при предпросмотре смещается. Добавьте отступ в admin-bar
.
Проверяйте совместимость с мобильным Safari. Только он отказывается рендерить position: sticky
в контейнерах с overflow. Хотите прилипшие кнопки? Придётся городить JS-костыли. Или отказаться.
Отдельная боль – сохранение состояния sidebar. После ресайза он может пропасть. Это не ошибка. Это localStorage
, который перезаписывает пользовательские настройки. Если вы хотите стабильное поведение – обнуляйте localStorage.getItem(\'interface\') == null
при инициализации.
Анимации? Забудьте. Даже минимальный transition: all 0.3s ease
рвёт производительность редактора. Используйте только transition: opacity
и то – с ограничениями.
Нет уверенности – не кастомизируй. Лучше адаптируй под существующую логику, чем лезь в глубины, где тебя ждут неожиданности. Блоки – это не просто HTML. Это React-компоненты с внутренним состоянием и непредсказуемыми перерендерингами.
Какие настройки пользователя будут сохраняться при переходе между экранами
Сразу – сохраняются: режим отображения, выбранная панель инструментов, свернутость боковой панели, текущий фильтр и контекст редактирования. Всё, что связано с удобством навигации и персонализацией, остается нетронутым.
- Состояние UI: открытые или закрытые метабоксы, их положение – записывается в
user_meta
- Текущий тип сортировки в списках: алфавитный порядок, дата, автор – фиксируется через URL-параметры, но при возврате применяется из сохраненных cookie
- Фильтрация: установленный taxonomy-фильтр, категория, автор, теги – сохраняется в сессии
- Режим просмотра: список или плитка – хранится в
localStorage
- Настройки колонок: включенные/отключенные поля в таблицах постов или медиа – в базе, привязаны к ID пользователя
Пример хранения пользовательских колонок:
update_user_meta( $user_id, \'manageedit-postcolumnshidden\', array( \'author\', \'comments\' ) );
Сложности начинаются при переходе между CPT и страницами настроек. Там механика разная. Некоторые данные подтягиваются динамически, другие требуют явного сохранения.
Важно помнить: если используешь кастомные экраны, убедись, что сохраняешь пользовательские предпочтения вручную через
get_user_setting()
иset_user_setting()
.
Обновление редактора контента? Там своя кухня. Настройки панели блоков, закрепленные элементы и даже последние выбранные блоки – всё это сохраняется в localStorage
под ключами вида wp-editor-settings
.
Но вот что не сохранится без ручной работы:
- Состояние вкладок в настройках темы
- Прокрутка страницы
- Открытые спойлеры и аккордеоны в пользовательских UI
Переход между страницами сбрасывает неинициализированные компоненты. Особенно если они не используют стандартные хуки и методы хранения. Если ты создаешь собственные блоки или интерфейсы – подумай заранее, где и как будешь хранить состояние.
Внимание! Всё, что не лежит в
user_meta
,localStorage
или сессии, исчезает как только пользователь перезагружает страницу.
Это не баг, это архитектура. Не полагайся на DOM. Не пиши костыли. Используй useEntityProp
, wp.data.dispatch
, сохраняй явно. Или потеряешь всё.
Критически важные состояния – только в базе. Остальное – мусор, если не успел зафиксировать. Быстро, чётко, осознанно.