Проблема: Gutenberg включен для всех типов записей, а нужно отключить только для некоторых
По умолчанию блоковый редактор Gutenberg активен для всех типов записей WordPress. Иногда требуется сохранить классический редактор для определённых кастомных типов записей (custom post types), чтобы обеспечить совместимость с плагинами или специфическим функционалом.
Диагностика проблемы
Для начала убедитесь, что Gutenberg действительно активен для нужного типа записи:
- Перейдите в админку WordPress
- Откройте редактирование записи нужного типа
- Проверьте, загружается ли блоковый редактор или классический
Если блоковый редактор активен, но нужен классический — значит Gutenberg нужно отключить именно для этого типа записи.
Пошаговое решение: отключаем Gutenberg для отдельных типов записей
Для отключения блокового редактора для отдельных типов записей используйте фильтр use_block_editor_for_post_type. Пример кода, который нужно добавить в файл functions.php вашей темы или в плагин:
add_filter('use_block_editor_for_post_type', function($can_edit, $post_type) {
// Список типов записей, для которых Gutenberg отключён
$excluded_post_types = ['product', 'your_custom_post_type'];
if (in_array($post_type, $excluded_post_types)) {
return false; // Отключить Gutenberg
}
return $can_edit; // Оставить по умолчанию для остальных
}, 10, 2);В этом примере Gutenberg отключён для типа записи product (WooCommerce) и your_custom_post_type — замените на свои типы.
Альтернативный способ: использование register_post_type
Если вы создаёте кастомный тип записи вручную, можно указать параметр 'show_in_rest' => false, чтобы полностью отключить поддержку Gutenberg:
register_post_type('your_custom_post_type', [
'label' => 'Мой тип записи',
'public' => true,
'show_in_rest' => false, // Отключить Gutenberg
// другие параметры
]);Это работает только для новых или редактируемых типов записи, зарегистрированных с таким параметром.
Как проверить, что решение сработало
- Откройте административную панель WordPress
- Перейдите к редактированию записи типа, для которого вы отключили Gutenberg
- Убедитесь, что загружается классический редактор, а не блоковый
- Для остальных типов записей редактор должен оставаться блоковым
Частые ошибки и как их исправить
- Ошибка: Код добавлен, но Gutenberg не отключается для нужного типа записи.
Причина: Возможно, тип записи зарегистрирован с'show_in_rest' => trueи приоритет фильтра ниже, чем у других плагинов.
Решение: Убедитесь, что фильтр добавлен с приоритетом 10 или ниже, и проверьте регистрацию типа записи. - Ошибка: Отключение Gutenberg сломало визуальный редактор.
Причина: Классический редактор не активирован или конфликт плагинов.
Решение: Установите и активируйте плагин Classic Editor, он гарантирует поддержку классического редактора. - Ошибка: Gutenberg отключается для всех типов записей.
Причина: Возвращаете false без проверки типа записи.
Решение: Проверьте условиеin_arrayв фильтре.
Практические советы по безопасности и производительности
- Не отключайте Gutenberg полностью, если только не требуется — это влияет на обновления и совместимость.
- Для кастомных типов записей используйте
'show_in_rest' => false, чтобы не загружать лишний REST API и ускорить работу. - Храните все кастомные фильтры и функции в отдельном плагине, чтобы не потерять при смене темы.
- Тестируйте изменения на staging-сервере, чтобы избежать простоев.
Сравнение методов отключения Gutenberg
| Метод | Описание | Плюсы | Минусы |
|---|---|---|---|
Фильтр use_block_editor_for_post_type | Динамическое отключение Gutenberg для выбранных типов записей | Гибкий контроль, работает с любыми типами | Нужно добавлять код, возможны конфликты с плагинами |
Параметр 'show_in_rest' => false | Отключает Gutenberg на уровне регистрации типа записи | Простота, не загружает REST API | Работает только для кастомных типов, не для стандартных |
| Плагин Classic Editor | Полностью переключает редактор на классический | Простота установки, поддержка от WordPress | Отключает Gutenberg глобально, мало гибкости |