11

WordPress added Gutenberg / block editor in its 5th version and it's enabled by default for Post and Page post types.

It might be enabled by default for all custom post types in close future so as a WordPress developer I want to know how to disable this editor for my own custom post types? I want to keep classic editor for the post types that I registered from my plugins or themes.

Hossein
  • 1,866
  • 3
  • 19
  • 35

3 Answers3

34

It's possible to simply disable the editor using a WordPress filter.

WordPress 5 and Higher

If you want to disable the block editor only for your own post types, you can add following code into your plugin or functions.php file of your theme.

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;
}

If you want to disable the block editor completely (Not recommended), you can use following code.

add_filter('use_block_editor_for_post_type', '__return_false');

Gutenberg Plugin (Before WordPress 5)

If you want to disable the Gutenberg editor only for your own post types, you can add following code into your plugin or functions.php file of your theme.

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;
}

If you want to disable the Gutenberg editor completely (Not recommended), you can use following code.

add_filter('gutenberg_can_edit_post_type', '__return_false');
Hossein
  • 1,866
  • 3
  • 19
  • 35
  • 1
    This filter was renamed to `use_block_editor_for_post_type`. – Jacob Raccuia Jan 13 '19 at 19:22
  • 1
    The filter must have the variables count (in my case, without it, I have error 500). It works with this: `add_filter('use_block_editor_for_post_type', 'prefix_disable_gutenberg', 10, 2)` – Diego Somar Apr 26 '19 at 00:12
  • for some reason for me the `post_type` parameter value is `'post'` instead of the proper id (or handler) name of the specific cpt post type. Now 2 out of 3 of my cpt types having this issue. (i wiped out all my custom functions, so none of those are generating this issue). Any ideas? – Viktor Borítás Aug 10 '20 at 13:46
1

Another way if you use custom post type.

When you register a cpt add add_post_type_support( 'news', 'excerpt' );

Full example :

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' );
Vincent Moulene
  • 857
  • 11
  • 27
0

as the other users shown above it is possible yes. Also, i'd like to make the following known.

In the latest Wordpress or Wordpress 5+ - (With Gutenberg) The 2 methods have the same effect to removing Gutenberg but also have different options when doing so:

(Insert both to functions.php or custom plugin functions)

To remove Gutenberg from your post type:

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;
  }

The above will remove Gutenberg editor completely from your custom post type but also leave other meta boxes/etc available and untouched.

However, if you wish to remove the text editor/text area itself - or other default options WordPress also considers this as Gutenberg, so you can remove this specifically and remove Gutenberg at the same time by adding the following:

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

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

The above will disable Gutenberg & the 'editor' of wordpress. This can replaced with other metabox/data options. (Author / Thumbnail /Revisions etc)

Dharman
  • 21,838
  • 18
  • 57
  • 107
JHeczG
  • 1