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

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