В одной из прошлых статей мы рассматривали один из способов полного отключения нового редактора – Gutenberg. Но что делать, если нужно его включать для определенных разделов сайта? Например, для отдельных записей, категорий, тегов или конкретных типов записей.
Все последующие действия предполагают редактирование functions.php – основного конфигурационного файла WordPress-темы. Если вы не знаете, как редактировать этот файл, то в этом случае поможет плагин ProFunctions.
В WordPress 5.0 Gutenberg включен по умолчанию везде. Поэтому, если нужно частичное его использование, то для начала редактор должен быть отключен вообще. Для этого нужно добавить код:
// WP < 5.0 beta add_filter( 'gutenberg_can_edit_post', '__return_false', 5 ); // WP >= 5.0 add_filter( 'use_block_editor_for_post', '__return_false', 5 );
Как включить Gutenberg для конкретных ID записей?
function wpschool_enable_gutenberg_post_ids( $can_edit, $post ) { if ( empty( $post->ID ) ) return $can_edit; if ( 1 === $post->ID ) return true; return $can_edit; } // Включить Gutenberg для WP < 5.0 beta add_filter( 'gutenberg_can_edit_post', 'wpschool_enable_gutenberg_post_ids', 10, 2 ); // Включить Gutenberg для WordPress >= 5.0 add_filter( 'use_block_editor_for_post', 'wpschool_enable_gutenberg_post_ids', 10, 2 );
Код задействует новый редактор для записи, у которой уникальный идентификатор (ID) равен 1. Вы сможете заменить это значение на нужное.
Как включить Gutenberg для новых записей?
Чтобы по умолчанию открывался Gutenberg при создании новых записей (Записи -> Добавить новую), используются следующие строки:
function wpschool_enable_gutenberg_new_posts( $can_edit, $post ) { if ( empty( $post->ID ) ) return $can_edit; $current = get_current_screen(); if ( 'post' === $current->base && 'add' === $current->action ) return true; return $can_edit; } // Включить Gutenberg для WP < 5.0 beta add_filter( 'gutenberg_can_edit_post', 'wpschool_enable_gutenberg_new_posts', 10, 2 ); // Включить Gutenberg для WordPress >= 5.0 add_filter( 'use_block_editor_for_post', 'wpschool_enable_gutenberg_new_posts', 10, 2 );
Как включить Gutenberg для конкретных метаданных записей?
Для этого существует код:
function wpschool_enable_gutenberg_post_meta( $can_edit, $post ) { if ( empty( $post->ID ) ) return $can_edit; if ( '21' === get_post_meta( $post->ID, 'human_age', true ) ) return true; return $can_edit; } // Включить Gutenberg для WP < 5.0 beta add_filter( 'gutenberg_can_edit_post', 'wpschool_enable_gutenberg_post_meta', 10, 2 ); // Включить Gutenberg для WordPress >= 5.0 add_filter( 'use_block_editor_for_post', 'wpschool_enable_gutenberg_post_meta', 10, 2 );
В приведенном коде идет проверка текущей записи на наличие произвольного поля human_age со значением 21. Если это так, то задействуется функционал редактора Gutenberg.
Как включить Gutenberg для конкретных категорий записей?
Задействовать новый редактор также можно и для создания/редактирования записей, входящих в ту или иную категорию.
function wpschool_enable_gutenberg_post_cats( $can_edit, $post ) { if ( empty( $post->ID ) ) return $can_edit; if ( has_category( 45 ) ) return true; return $can_edit; } // Включить Gutenberg для WP < 5.0 beta add_filter( 'gutenberg_can_edit_post', 'wpschool_enable_gutenberg_post_cats', 10, 2 ); // Включить Gutenberg для WordPress >= 5.0 add_filter( 'use_block_editor_for_post', 'wpschool_enable_gutenberg_post_cats', 10, 2 );
В коде используется специальная WordPress-функция has_category(), которая проверяет, принадлежит ли текущая запись к категории с идентификатором 45.
Как включить Gutenberg для конкретных тегов?
Включение Gutenberg также можно применить к тегам (меткам).
function wpschool_enable_gutenberg_post_tags( $can_edit, $post ) { if ( empty( $post->ID ) ) return $can_edit; if ( has_tag( 15 ) ) return true; return $can_edit; } // Включить Gutenberg для WP < 5.0 beta add_filter( 'gutenberg_can_edit_post', 'wpschool_enable_gutenberg_post_tags', 10, 2 ); // Включить Gutenberg для WordPress >= 5.0 add_filter( 'use_block_editor_for_post', 'wpschool_enable_gutenberg_post_tags', 10, 2 );
В коде используется функция has_tag(), которая проверяет принадлежность записи к метке с ID равному 15.
Как включить Gutenberg для определенных типов записей?
Если вы на своем сайте используете пользовательские типы записей, то и для них можно настроить использование Gutenberg.
function wpschool_enable_gutenberg_post_type( $can_edit, $post ) { if ( empty( $post->ID ) ) return $can_edit; if ( 'music' === $post_type ) return true; return $can_edit; } // Включить Gutenberg для WP < 5.0 beta add_filter( 'gutenberg_can_edit_post_type', 'wpschool_enable_gutenberg_post_type', 10, 2 ); // Включить Gutenberg для WordPress >= 5.0 add_filter( 'use_block_editor_for_post_type', 'wpschool_enable_gutenberg_post_type', 10, 2 );
В коде идет проверка, принадлежит ли текущая запись к типу music. Если это так, то будет задействован новый редактор. Вам необходимо будет изменить только название типа.
Нажмите, пожалуйста, на одну из кнопок, чтобы узнать понравилась статья или нет.
Как включить гутенберг в рубрике? В самой рубрике, а не в записях рубрики.
Добрый день!
Если Вы имеете в виду включить Gutenberg в админ-разделе Записи – Рубрики, то я не встречал таких способов.
С уважением Михаил
Добрый день. проблемма с кодом “Как включить Gutenberg для определенных типов записей?” – тот код что вы представили почему то мой проект выбивает в белый экран. тип записей создавался через register_post_type.
Здравствуйте, а как включить Гутенберг в комментариях? 😉 Это вообще
Готового решения в репозитории и на площадках с платными WordPress-модулями нет, но есть экспериментальный плагин Block Comments от Тома Новелла. Он доступен на GitHub.