Редактор блоков Gutenberg стал стандартом создания контента в современных версиях WordPress. Однако при работе с ним иногда возникают проблемы: блоки не загружаются, страница редактора зависает или бесконечно перезагружается. В этой статье разберем основные причины таких сбоев, а также предложим конкретные решения и примеры кода для устранения этих проблем.
Почему блоки Gutenberg могут бесконечно перезагружаться
Основные причины, по которым Gutenberg может зависать или перезагружаться:
- Конфликт плагинов или темы с редактором.
- Ошибки в JavaScript, связанные с блоками или настройками редактора.
- Неправильная регистрация или использование кастомных блоков.
- Проблемы с REST API, на котором основан Gutenberg.
- Поврежденные данные в базе, влияющие на загрузку блоков.
Для начала важно проверить консоль браузера на наличие ошибок JavaScript — они часто сразу укажут на источник проблемы. Также стоит отключить недавно установленные плагины и активировать дефолтную тему (например, Twenty Twenty-Three) для исключения конфликтов.
Диагностика и устранение конфликтов плагинов и темы
Чтобы найти плагин, вызывающий перезагрузку Gutenberg:
- Перейдите в админку WordPress → Плагины.
- Отключите все плагины.
- Проверьте работу редактора.
- Включайте плагины по одному, проверяя после каждого состояние редактора.
Если проблема возникает после включения конкретного плагина, можно:
- Обновить плагин до последней версии.
- Обратиться к разработчику плагина.
- Временно заменить плагин аналогом.
Для проверки темы:
- Перейдите в Внешний вид → Темы.
- Активируйте дефолтную тему WordPress.
- Проверьте работу Gutenberg.
Если с дефолтной темой все работает, значит, проблема в вашей текущей теме. Проверьте в ней функции, связанные с редактором, особенно хуки, скрипты и стили, подключаемые к Gutenberg.
Проверка ошибок JavaScript и REST API
Откройте консоль браузера (обычно F12 → вкладка Console) при загрузке редактора. Обратите внимание на ошибки, связанные с JavaScript. Часто это могут быть:
- Ошибки синтаксиса в скриптах.
- Отсутствие необходимых скриптов или стилей.
- Проблемы с REST API — например, запросы возвращают ошибку 403 или 500.
Для проверки REST API:
- Перейдите по адресу
https://ваш-сайт/wp-json/wp/v2/posts(замените на свой домен). - Если вы видите JSON с постами — API работает.
- Если возникает ошибка, проверьте настройки пермалинков, файл .htaccess или наличие плагинов безопасности, блокирующих запросы.
Практическое решение: отключение конфликтных скриптов
Если вы нашли, что проблема возникает из-за конфликтного скрипта, вы можете отключить его загрузку на странице редактора. Пример функции для functions.php вашей темы или плагина:
function wpai_remove_conflicting_scripts() {
// Проверяем, что мы в редакторе Gutenberg
if (function_exists('is_gutenberg_page') && is_gutenberg_page()) {
// Отключаем конкретный скрипт по его хендлу
wp_dequeue_script('handle-conflicting-script');
wp_deregister_script('handle-conflicting-script');
}
}
add_action('admin_enqueue_scripts', 'wpai_remove_conflicting_scripts', 100);Замените handle-conflicting-script на реальный хендл скрипта, вызывающего проблему. Чтобы узнать хендл, можно посмотреть исходный код страницы редактора или использовать дебаг-плагины.
Регистрация кастомных блоков без ошибок
Если вы создаете собственные блоки, убедитесь, что их регистрация происходит корректно и не вызывает ошибок, которые могут привести к перезагрузке редактора.
Пример правильной регистрации блока с префиксом wpai:
function wpai_register_custom_block() {
// Регистрируем скрипт блока
wp_register_script(
'wpai-custom-block',
plugins_url('block.js', __FILE__),
array('wp-blocks', 'wp-element', 'wp-editor'),
filemtime(plugin_dir_path(__FILE__) . 'block.js')
);
// Регистрируем сам блок
register_block_type('wpai/custom-block', array(
'editor_script' => 'wpai-custom-block',
));
}
add_action('init', 'wpai_register_custom_block');В файле block.js важно избегать синтаксических ошибок и проверять совместимость с версией WordPress.
Использование плагина Health Check для диагностики Gutenberg
Плагин Health Check & Troubleshooting позволяет включить режим устранения неполадок без отключения плагинов для всех пользователей сайта.
С помощью него вы можете:
- Включить дефолтную тему и отключить все плагины только для себя.
- Проверить работу редактора в чистой среде.
- Последовательно активировать плагины и тему, чтобы выявить источник проблемы.
Это безопасный способ диагностики без риска повредить работу сайта для других пользователей.
Советы по предотвращению проблем с Gutenberg
Чтобы минимизировать вероятность зависаний и перезагрузок блоков:
- Всегда обновляйте WordPress, темы и плагины до последних версий.
- Не используйте плагины, которые не поддерживаются или конфликтуют с редактором.
- Тестируйте кастомные блоки на тестовом сайте перед внедрением на продакшен.
- Регулярно проверяйте консоль браузера на наличие ошибок при работе с редактором.
- Используйте инструменты, как Health Check, для мониторинга состояния сайта.