Редактор Gutenberg, введённый в WordPress с версии 5.0, стал стандартным визуальным редактором для создания контента. Однако иногда возникает необходимость отключить его для определённых типов записей (post types), например, для кастомных типов или страниц, где классический редактор или собственные метабоксы работают лучше. В этой статье мы рассмотрим, как именно это сделать максимально эффективно и без потери функционала.
Почему может потребоваться отключить Gutenberg для отдельных типов записей
Gutenberg — мощный и современный редактор, но он не всегда оптимален для всех задач. Вот несколько причин, почему стоит отключить его для отдельных типов записей:
- Кастомные типы записей с уникальными метабоксами, которые плохо сочетаются с блоковым редактором.
- Существующие сайты с большим количеством контента, созданного классическим редактором, где переход на Gutenberg может вызвать баги.
- Плагины и темы, которые не поддерживают блоки для определённых типов записей.
- Желание сохранить привычный классический интерфейс для простоты и скорости работы с определёнными записями.
Важно понимать, что отключение Gutenberg не означает отказ от всего редактора, а лишь переключение на классический редактор для выбранных типов записей.
Способы отключения Gutenberg для конкретных типов записей
Использование плагина Disable Gutenberg
Один из самых популярных и простых способов — использовать плагин Disable Gutenberg. Он позволяет отключать Gutenberg глобально или для выбранных типов записей, ролей пользователей и т.д.
Чтобы отключить Gutenberg только для кастомного типа записи product, нужно в настройках плагина задать соответствующий фильтр. Если требуется программный способ, можно добавить следующий код в файл functions.php вашей темы или в собственный плагин:
add_filter('disable_gutenberg_post_types', function($post_types) {
$post_types[] = 'product'; // Добавляем тип записи, для которого отключаем Gutenberg
return $post_types;
});Этот подход прост и не требует глубокого погружения в код. Однако, если нужен более гибкий контроль, рассмотрим кодовые варианты.
Отключение Gutenberg через функцию в functions.php
WordPress предоставляет фильтр use_block_editor_for_post_type, который позволяет управлять включением или отключением блокового редактора для любого типа записи. Вот пример функции, отключающей Gutenberg только для кастомного типа записи product и стандартной страницы page:
function wpconfig_disable_gutenberg_for_post_types($use_block_editor, $post_type) {
$disabled_post_types = array('product', 'page'); // Типы записей для отключения Gutenberg
if (in_array($post_type, $disabled_post_types)) {
return false; // Отключаем Gutenberg
}
return $use_block_editor; // Для остальных типов оставляем как есть
}
add_filter('use_block_editor_for_post_type', 'wpconfig_disable_gutenberg_for_post_types', 10, 2);В этом коде мы явно отключаем блоковый редактор для выбранных типов записей. Очень удобно, если нужно быстро расширить список или добавить условия.
Отключение Gutenberg только для отдельных постов или по условию
Иногда нужно отключать редактор не по типу записи, а по другим критериям, например, по ID записи или по роли пользователя. Для этого можно использовать фильтр use_block_editor_for_post, который работает для конкретного поста.
function wpconfig_disable_gutenberg_for_certain_posts($use_block_editor, $post) {
// Отключаем Gutenberg для поста с ID 123
if ($post && in_array($post->ID, array(123, 456))) {
return false;
}
// Отключаем для роли 'editor'
if (current_user_can('editor')) {
return false;
}
return $use_block_editor;
}
add_filter('use_block_editor_for_post', 'wpconfig_disable_gutenberg_for_certain_posts', 10, 2);Этот подход позволяет контролировать редактор на максимально гибком уровне. Можно комбинировать с проверками метаданных, категорий и прочих условий.
Как вернуть классический редактор и сохранить метабоксы
При отключении Gutenberg важно убедиться, что классический редактор подключён и работает корректно. Для этого можно установить плагин Classic Editor или добавить поддержку классического редактора в код:
add_filter('use_block_editor_for_post_type', function($use_block_editor, $post_type) {
if (in_array($post_type, array('product', 'page'))) {
return false;
}
return $use_block_editor;
}, 10, 2);При отключении Gutenberg для определённых типов записей метабоксы, добавленные через add_meta_box, будут отображаться в классическом редакторе без проблем. Это удобно для сохранения кастомного функционала.
Пример простого плагина для отключения Gutenberg для custom post type
Для удобства можно оформить отключение Gutenberg в виде собственного плагина. Вот минимальный пример:
<?php
/**
* Plugin Name: WPConfig Disable Gutenberg for Products
* Description: Отключает редактор Gutenberg для типа записи product
* Version: 1.0
* Author: WPConfig
*/
function wpconfig_disable_gutenberg_for_products($use_block_editor, $post_type) {
if ($post_type === 'product') {
return false;
}
return $use_block_editor;
}
add_filter('use_block_editor_for_post_type', 'wpconfig_disable_gutenberg_for_products', 10, 2);Такой плагин легко расширять, добавлять новые типы записей или условия отключения.
Заключение: рекомендации по отключению Gutenberg
Отключение Gutenberg для отдельных типов записей — частая задача у разработчиков, работающих с кастомными типами, сложными метабоксами и старыми сайтами. Используйте фильтр use_block_editor_for_post_type для простого и надёжного решения, а если нужна гибкость — комбинируйте с use_block_editor_for_post и дополнительными проверками.
Не забывайте проверять работу метабоксов и плагинов после отключения Gutenberg, а при необходимости используйте плагин Classic Editor, чтобы обеспечить стабильную работу классического редактора.
Таким образом, вы сможете сохранить удобство работы с контентом и совместимость с вашим функционалом, не жертвуя современными возможностями WordPress.