14

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.

4

5 回答 5

46

可以使用 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');

古腾堡插件(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;
}

如果要完全禁用 Gutenberg 编辑器(不推荐),可以使用以下代码。

add_filter('gutenberg_can_edit_post_type', '__return_false');
于 2018-09-06T08:22:03.513 回答
2

正如上面显示的其他用户一样,是的。另外,我想说明以下内容。

在最新的 Wordpress 或 Wordpress 5+ - (With Gutenberg) 这两种方法对删除 Gutenberg 具有相同的效果,但在这样做时也有不同的选项:

(插入到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;
  }

以上内容将从您的自定义帖子类型中完全删除 Gutenberg 编辑器,但也会保留其他元框/等可用且不受影响。

但是,如果您希望删除文本编辑器/文本区域本身 - 或其他默认选项 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');
 }

以上将禁用 Gutenberg 和 wordpress 的“编辑器”。这可以用其他元框/数据选项替换。(作者/缩略图/修订等)

于 2020-08-05T00:03:22.430 回答
0

由于您在插件中注册了自定义帖子类型show_in_rest,因此禁用块编辑器的最快解决方案是将选项设置为 false in register_post_type

<?php
$args = array(
  'label'        => 'Custom Posts',
  'show_ui'      => true,
  'show_in_rest' => false,          // ← Disables the block editor.
);
register_post_type( 'my-cpt-slug', $args );
于 2021-09-03T13:25:07.583 回答
0

如果您使用自定义帖子类型的另一种方法。

当你注册一个 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' );
于 2019-04-11T11:59:10.300 回答
-1

如果您想从自定义帖子类型中删除编辑器或任何其他字段,请在 functions.php 文件中使用此代码

add_action( 'init', function() {
    remove_post_type_support( 'custom post name', 'filed name' );
}, 99);
于 2021-08-11T23:17:31.683 回答