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

В одной из прошлых статей мы рассматривали один из способов полного отключения нового редактора – 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. Если это так, то будет задействован новый редактор. Вам необходимо будет изменить только название типа.

Нажмите, пожалуйста, на одну из кнопок, чтобы узнать понравилась статья или нет.

Если Вам понравилась статья — поделитесь с друзьями
Михаил Петров
Привет! Меня зовут Михаил Петров. Я копирайтер и занимаюсь этим с 2013 года. Скрупулезность и ответственность - моя фишка! Не могу делать как попало и добиваюсь, чтоб заказчик сказал минимум “неплохо”. За все время своей работы пришлось написать и отредактировать немало разной “текстовухи”, включая SEO-тексты, отзывы и прочую чушь. На сегодняшний день специализируюсь на написании информационных статей и руководств технического направления. Вижу смысл и светлое будущее в текстах для людей, а не для машин.
Обсуждение: 3
  1. Леон

    Как включить гутенберг в рубрике? В самой рубрике, а не в записях рубрики.

    1. Михаил Петров author

      Добрый день!

      Если Вы имеете в виду включить Gutenberg в админ-разделе Записи – Рубрики, то я не встречал таких способов.

      С уважением Михаил

  2. кирилл

    Добрый день. проблемма с кодом “Как включить Gutenberg для определенных типов записей?” – тот код что вы представили почему то мой проект выбивает в белый экран. тип записей создавался через register_post_type.

Задать вопрос