Как отключить редактор блоков Гутенберга / блоков для определенных типов сообщений?

WordPress добавил редактор блоков Гутенберга в свою 5-ю версию, и он включен по умолчанию для типов сообщений и страниц.

В ближайшем будущем он может быть включен по умолчанию для всех настраиваемых типов сообщений, поэтому как разработчик WordPress я хочу знать, как отключить этот редактор для моих собственных типов сообщений? Я хочу сохранить классический редактор для типов сообщений, которые я зарегистрировал в своих плагинах или темах.


person Hossein    schedule 06.09.2018    source источник


Ответы (3)


Можно просто отключить редактор с помощью фильтра WordPress.

WordPress 5 и выше

Если вы хотите отключить редактор блоков только для ваших собственных типов сообщений, вы можете добавить следующий код в свой плагин или functions.php файл своей темы.

add_filter('use_block_editor_for_post_type', 'prefix_disable_gutenberg', 10, 2);
function prefix_disable_gutenberg($current_status, $post_type)
{
    // Use your post type key instead of 'product'
    if ($post_type === 'product') return false;
    return $current_status;
}

Если вы хотите полностью отключить редактор блоков (не рекомендуется), вы можете использовать следующий код.

add_filter('use_block_editor_for_post_type', '__return_false');

Плагин Gutenberg (до WordPress 5)

Если вы хотите отключить редактор Гутенберга только для ваших собственных типов сообщений, вы можете добавить следующий код в свой плагин или functions.php файл своей темы.

add_filter('gutenberg_can_edit_post_type', 'prefix_disable_gutenberg', 10, 2);
function prefix_disable_gutenberg($current_status, $post_type)
{
    // Use your post type key instead of 'product'
    if ($post_type === 'product') return false;
    return $current_status;
}

Если вы хотите полностью отключить редактор Гутенберга (не рекомендуется), вы можете использовать следующий код.

add_filter('gutenberg_can_edit_post_type', '__return_false');
person Hossein    schedule 06.09.2018
comment
Этот фильтр был переименован в use_block_editor_for_post_type. - person Jacob Raccuia; 13.01.2019
comment
В фильтре должно быть количество переменных (в моем случае без него ошибка 500). Это работает с этим: add_filter('use_block_editor_for_post_type', 'prefix_disable_gutenberg', 10, 2) - person Diego Somar; 26.04.2019
comment
по какой-то причине для меня значение параметра post_type равно 'post' вместо правильного имени идентификатора (или обработчика) конкретного типа сообщения cpt. Теперь 2 из 3 моих типов cpt имеют эту проблему. (я уничтожил все свои пользовательские функции, поэтому ни один из них не вызывает этой проблемы). Любые идеи? - person Viktor Borítás; 10.08.2020

как и другие пользователи, показанные выше, возможно, да. Также хочу сообщить следующее.

В последней версии Wordpress или Wordpress 5+ - (с Гутенбергом) 2 метода имеют одинаковый эффект для удаления Гутенберга, но также имеют разные варианты при этом:

(Вставьте оба файла в functions.php или в пользовательские функции плагина)

Чтобы удалить Гутенберга из своего сообщения, введите:

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

 function prefix_disable_gutenberg($gutenberg_filter, $post_type)
  {
   if ($post_type === 'your_post_type') return false;
   return $gutenberg_filter;
  }

Вышеупомянутое полностью удалит редактор Гутенберга из вашего пользовательского типа сообщения, но также оставит доступными и нетронутыми другие мета-поля и т. Д.

Однако, если вы хотите удалить сам текстовый редактор / текстовую область или другие параметры по умолчанию, WordPress также считает это Gutenberg, поэтому вы можете удалить это специально и одновременно удалить Gutenberg, добавив следующее:

add_action('init', 'init_remove_editor',100);

 function init_remove_editor(){
  $post_type = 'your_post_type';
  remove_post_type_support( $post_type, 'editor');
 }

Вышеупомянутое отключит Гутенберга и «редактор» Wordpress. Его можно заменить другими параметрами метабокса / данных. (Автор / Миниатюра / Редакции и т. Д.)

person JCrook    schedule 05.08.2020

Другой способ, если вы используете произвольный тип сообщения.

При регистрации cpt добавьте add_post_type_support( 'news', 'excerpt' );

Полный пример:

function create_news() {
    $args = [
        'labels' => [
            'name' => __( 'News', 'lang' ),
            'singular_name' => __( 'News', 'lang' ),
            'add_new_item'       => __( 'Add a news', 'lang' ),
    ],
        'public' => true,
        'has_archive' => true,
        'menu_icon' => 'dashicons-admin-post',
        'show_in_rest' => false,
        'rewrite' => ['slug' => 'news'],
        'show_in_nav_menus' => true,
    ];

    register_post_type( 'news',
        $args
    );
}
add_action( 'init', 'create_news' );
add_post_type_support( 'news', 'excerpt' );
person Vincent Moulene    schedule 11.04.2019