Как отключить Gutenberg для отдельных типов записей: фильтр или плагин

С WordPress 5.0 блочный редактор Gutenberg стал стандартным, а классический редактор на TinyMCE переехал в отдельный плагин. Для обычных записей блога это удобно, но не для всех типов записей: каталогам, своим типам записей (CPT) с метабоксами и старыми экранами ACF часто лучше подходит классический экран правки. Ниже три способа отключить Gutenberg точечно: по типу записи, для отдельных записей и плагином.

Отключить для типа записи: фильтр use_block_editor_for_post_type

Самый чистый вариант это фильтр use_block_editor_for_post_type. Он появился в WordPress 5.0, получает два аргумента: текущее решение (по умолчанию true) и slug типа записи. Если вернуть false, для этого типа откроется классический редактор. Код кладут в functions.php дочерней темы или, лучше, в mu-plugin, чтобы он не пропал при смене темы:

add_filter( 'use_block_editor_for_post_type', 'krv_disable_gutenberg_for_types', 10, 2 );

function krv_disable_gutenberg_for_types( $use_block_editor, $post_type ) {
	// типы записей, где нужен классический редактор
	$disable_for = array( 'product', 'portfolio', 'book' );

	if ( in_array( $post_type, $disable_for, true ) ) {
		return false;
	}

	return $use_block_editor;
}

Вместо product, portfolio и book подставьте свои slug. У обычных записей slug post, у страниц page.

Ещё одна деталь: блочный редактор работает только с типами записей, у которых в register_post_type() включён show_in_rest и есть поддержка editor. Если вы сами регистрируете тип записи и Gutenberg для него не нужен, достаточно не включать show_in_rest, но тогда этот тип не будет доступен и через REST API.

Отключить для отдельных записей

Если редактор мешает только на нескольких записях, подойдёт фильтр use_block_editor_for_post. Он получает решение и сам объект записи:

add_filter( 'use_block_editor_for_post', function ( $use, $post ) {
	$disable_ids = array( 12, 34, 56 );

	if ( $post && in_array( (int) $post->ID, $disable_ids, true ) ) {
		return false;
	}

	return $use;
}, 10, 2 );

Список ID удобен для пары исключений. Если таких записей много, лучше проверять не ID, а шаблон страницы, рубрику или произвольное поле.

Плагины: Classic Editor и Disable Gutenberg

Classic Editor это официальный плагин команды WordPress, сейчас версия 1.7.0. По умолчанию он прячет блочный редактор целиком и возвращает старый экран правки. В настройках можно выбрать редактор по умолчанию для всех и разрешить пользователям переключаться между редакторами для каждой записи. У плагина есть фильтры, через которые другие плагины управляют выбором редактора по типу записи.

Disable Gutenberg гибче: отключает блочный редактор полностью или выборочно по типам записей, ролям пользователей, шаблонам темы и ID записей. Ещё он умеет вернуть классические виджеты вместо блочных и спрятать напоминания о Gutenberg. Текущая версия 3.3.2, проверена с WordPress 7.1.3.

Плагин проще сопровождать, если на сайте нет разработчика. Код в mu-plugin надёжнее, если список типов записей не меняется: меньше зависимостей и никаких лишних настроек в админке.

Что учесть

  • Отключение редактора не удаляет уже сохранённые блоки: в классическом редакторе они видны как HTML-комментарии <!-- wp:... -->, а на сайте выводятся как раньше.
  • Блочные темы и редактор сайта (Full Site Editing) завязаны на блоки, для страниц и шаблонов в такой теме Gutenberg лучше не отключать.
  • Старые метабоксы плагинов часто нормально работают только в классическом редакторе. Если метабокс пропал, точечное отключение Gutenberg для этого типа записи обычно решает проблему.
  • Фильтры меняют только редактор в админке. Блоки на сайте, стили блоков и REST API продолжают работать.

Коротко

  • Нужно ли отключать Gutenberg везде? Обычно нет. Имеет смысл точечно: типы записей со своим интерфейсом, старые процессы редакции, плагины без поддержки блоков.
  • Какой фильтр главный? use_block_editor_for_post_type для типа записи, use_block_editor_for_post для конкретной записи.
  • Classic Editor или Disable Gutenberg? Classic Editor возвращает классический редактор и даёт выбор пользователям. Disable Gutenberg позволяет выключить блочный редактор по правилам: типы записей, роли, шаблоны, ID.

В итоге для одного-двух типов записей хватает нескольких строк с фильтром use_block_editor_for_post_type в mu-plugin. Если правил больше или сайт ведёт не разработчик, проще поставить Disable Gutenberg или Classic Editor.

Источники и ссылки


Комментарии загружаются…