Редактор Gutenberg — мощный инструмент для создания контента в WordPress, однако многие разработчики и пользователи сталкиваются с проблемами при перемещении блоков (drag and drop). Это может выражаться в некорректном срабатывании перетаскивания, залипании, сдвиге других элементов или полной невозможности переставить блок. В этой статье мы разберем причины подобных проблем и покажем, как их избежать или исправить с помощью плагинов и собственного кода.
Типичные причины проблем с перемещением блоков в Gutenberg
Проблемы с drag and drop в Gutenberg обычно возникают из-за конфликтов JavaScript, CSS-стилей или особенностей темы и плагинов. Рассмотрим основные причины:
- Конфликты с другими плагинами. Некоторые плагины могут переопределять события мыши или перетаскивания, ломая стандартное поведение Gutenberg.
- Особенности темы. Некорректные CSS-свойства, например, overflow:hidden или transform на контейнерах, могут мешать корректной работе drag and drop.
- Ошибки в пользовательском JavaScript. Если вы добавляете кастомные скрипты, они могут конфликтовать с событиями редактора.
- Сильно кастомизированные блоки. Если блоки создают свои обработчики перетаскивания, это тоже может вызвать проблемы.
Чтобы точно диагностировать, отключите все плагины кроме Gutenberg и смените тему на стандартную (например, Twenty Twenty-One). Если проблема пропадает — ищите конфликт именно там.
Использование плагинов для решения проблем с drag and drop в Gutenberg
Существуют плагины, которые помогают улучшить UX редактора и исправить баги с перетаскиванием:
- Classic Editor — временное решение, если перемещение блоков критически сломано, можно временно переключиться на классический редактор.
- Clearfy Pro — плагин для оптимизации и исправления множества конфликтов, включая проблемы с Gutenberg, отключает лишние скрипты и стили, которые могут мешать drag and drop.
- Disable Gutenberg — полностью отключает Gutenberg, если проблема не решается и требуется использовать классический редактор.
Эти плагины подходят для быстрого исправления или обхода проблем, однако лучше устранить корень проблемы, чтобы сохранить преимущества Gutenberg.
Практические советы и примеры кода для устранения проблем с drag and drop
Если вы разработчик и хотите исправить проблему программно, обратите внимание на следующие моменты:
1. Проверка и исправление CSS
Часто причина в стилях контейнеров, в которых находятся блоки. Например, overflow: hidden или transform могут мешать drag and drop. Рекомендуется проверить и при необходимости переопределить:
/* Отключаем overflow и transform на родителях редактора */
.editor-styles-wrapper, .block-editor-block-list__layout {
overflow: visible !important;
transform: none !important;
}
Этот код можно добавить в файл стилей вашей темы или подключить через плагин.
2. Отключение конфликтных скриптов
Иногда сторонние скрипты вмешиваются в поведение редактора. Можно программно отключить их на страницах редактирования:
add_action('admin_enqueue_scripts', 'wpplugins_remove_conflicting_scripts', 100);
function wpplugins_remove_conflicting_scripts() {
$screen = get_current_screen();
if ( $screen && 'post' === $screen->base ) {
// Пример отключения скрипта по хендлу
wp_dequeue_script('conflicting-script-handle');
wp_deregister_script('conflicting-script-handle');
}
}
Замените conflicting-script-handle на идентификатор скрипта, который конфликтует.
3. Использование хуков для контроля поведения блоков
Можно добавить фильтры, чтобы менять поведение блоков или отключать определённые функции, мешающие перемещению:
add_filter('block_editor_settings', 'wpplugins_modify_block_editor_settings');
function wpplugins_modify_block_editor_settings($settings) {
// Отключаем drag and drop для проблемных блоков
if (isset($settings['__experimentalFeatures'])) {
$settings['__experimentalFeatures']['dragAndDropSupport'] = false;
}
return $settings;
}
Такой подход помогает добиться стабильности, если причина в экспериментальных функциях.
Проверка совместимости темы и плагинов: рекомендации
Для надежной работы drag and drop в Gutenberg важно:
- Использовать темы, совместимые с Gutenberg. Например, темы Reboot или Root от WPSHOP отлично адаптированы.
- Минимизировать количество плагинов, которые влияют на админку и редактор.
- Регулярно обновлять WordPress, темы и плагины — в новых версиях часто исправляют баги с редактором.
Если проблема появляется после обновления — попробуйте откатиться на предыдущую версию или сообщить разработчикам.
Отладка проблем с перетаскиванием блоков: пошаговое руководство
Чтобы эффективно выявить источник бага, следуйте алгоритму:
- Отключите все плагины кроме Gutenberg.
- Переключитесь на стандартную тему WordPress.
- Проверьте, работает ли drag and drop корректно.
- Если да — включайте по одному плагину, проверяя после каждого.
- Если баг появился — проблема в последнем включенном плагине.
- Если нет — возвращайте тему и снова тестируйте.
- Используйте консоль разработчика браузера (F12) для поиска JS-ошибок.
Этот метод позволит быстро определить конфликт и принять меры.
Выводы и рекомендации
Проблемы с перемещением блоков в Gutenberg — частое явление, но их можно устранить или минимизировать. Главное — последовательно проверять плагины и тему, использовать проверенные решения и при необходимости исправлять стили и скрипты. Если хотите сохранить функционал Gutenberg и избежать ошибок, рекомендуем обратить внимание на оптимизационные плагины, например, Clearfy Pro, и использовать совместимые темы, такие как Reboot.