Диагностика проблемы с Gutenberg
Редактор Gutenberg, появившийся в WordPress 5.0, значительно изменил работу с контентом, но не всегда подходит под потребности проекта. Часто пользователи сталкиваются с необходимостью отключения Gutenberg из-за несовместимости с плагинами, кастомными полями или привычкой использовать классический редактор.
Прежде чем приступать к отключению, нужно понять, какие именно проблемы возникают с Gutenberg:
- Невозможность редактирования старого контента из-за несовместимости блоков.
- Ошибки JavaScript в консоли браузера при загрузке редактора.
- Конфликты с плагинами, которые не поддерживают блоки.
- Замедление загрузки страницы редактора.
Проверить наличие ошибок можно в консоли браузера (F12 > Console), а также временно отключить плагины для выявления конфликтов.
Пошаговое отключение Gutenberg с сохранением контента
1. Отключение Gutenberg через код в functions.php
Самый простой и безопасный способ отключить Gutenberg — принудительно вернуть классический редактор для всех типов записей. Для этого добавьте следующий код в файл functions.php вашей темы или в плагин для кастомных функций:
add_filter('use_block_editor_for_post', '__return_false', 10);Это отключит блоковый редактор для всех записей и вернет классический TinyMCE.
2. Использование официального плагина Classic Editor
Если хотите отключить Gutenberg централизованно и иметь возможность переключаться между редакторами, установите плагин Classic Editor. Он официально поддерживается WordPress и позволяет контролировать поведение редакторов:
- Отключить Gutenberg полностью.
- Разрешить пользователям переключаться.
После установки и активации перейдите в Настройки > Письма и выберите нужный режим.
3. Удаление плагинов, расширяющих Gutenberg (если необходимо)
Если вы ранее устанавливали плагины для расширения Gutenberg (например, дополнительные блоки), отключите их, чтобы избежать конфликтов.
Проверка результата после отключения Gutenberg
Чтобы убедиться, что Gutenberg отключен:
- Откройте редактирование любой записи. Должен открыться классический редактор.
- Проверьте консоль браузера на отсутствие ошибок JS, связанных с блоками.
- Создайте новую запись и убедитесь, что нет интерфейса блоков.
Если используется плагин Classic Editor, проверьте, что выбран нужный режим в настройках.
Частые ошибки и как их исправить
- Редактор все еще блоковый после добавления кода
Причина: кеширование сайта или плагинов. Очистите кеш браузера, кеш на стороне сервера (если есть) и деактивируйте плагины кеширования. - Появляются ошибки JavaScript
Причина: конфликт плагинов или темы с отключением Gutenberg. Отключите все плагины кроме необходимых и смените тему на дефолтную (например, Twenty Twenty-Three) для диагностики. - Старый контент отображается некорректно
Причина: часть контента создана с использованием блоков. В таком случае классический редактор не сможет отобразить блоки, но контент сохранится. Для редактирования придется включать Gutenberg или конвертировать блоки в HTML.
Практические советы по безопасности и производительности
- Перед внесением изменений сделайте полную резервную копию сайта и базы данных.
- Отключение Gutenberg через фильтр не влияет на безопасность, но помогает избежать багов и конфликтов.
- Если используете плагин Classic Editor, обновляйте его регулярно, так как он поддерживается WordPress и получает патчи.
- Избегайте ручного удаления файлов Gutenberg — это может привести к ошибкам при обновлениях.
Таблица сравнения способов отключения Gutenberg
| Метод | Преимущества | Недостатки |
|---|---|---|
Фильтр use_block_editor_for_post | Простой, не требует плагинов, легкий контроль | Нет переключения между редакторами, требует правки кода |
| Плагин Classic Editor | Официальный, удобное управление, можно переключаться между редакторами | Дополнительный плагин, небольшой оверхед |
| Удаление Gutenberg файлов | Полное удаление функционала | Риск ошибок, не рекомендуется, проблемы при обновлениях |
Пример кода: отключение Gutenberg для всех типов записей, кроме страниц
function disable_gutenberg_except_pages($use_block_editor, $post) {
if ($post->post_type !== 'page') {
return false;
}
return $use_block_editor;
}
add_filter('use_block_editor_for_post', 'disable_gutenberg_except_pages', 10, 2);Этот код отключит Gutenberg на всех типах записей, кроме страниц — полезно, если хотите частично сохранить функциональность блоков.
Вывод
Отключение редактора Gutenberg — частая задача для разработчиков, работающих с WordPress-сайтами, где классический редактор предпочтительнее. Использование фильтра use_block_editor_for_post или плагина Classic Editor — надежные методы, которые не повредят контенту и не ухудшат стабильность сайта.
Для комплексного решения рекомендуем комбинировать программные методы с проверкой совместимости плагинов и тем, а также периодическим обновлением системы.