wordpress 如何禁用 gutenberg /块编辑器的某些职位类型?

oknwwptz  于 2022-11-02  发布在  WordPress
关注(0)|答案(6)|浏览(206)

WordPress在其第5版中添加了gutenberg /块编辑器,默认情况下,它对帖子和页面帖子类型启用。
在不久的将来,它可能会默认为所有自定义帖子类型启用,所以作为一个WordPress开发人员,我想知道如何为我自己的自定义帖子类型禁用此编辑器?我想为我从插件或主题注册的帖子类型保留经典编辑器。

ffx8fchx

ffx8fchx1#

可以使用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之前)
如果你想只对你自己的帖子类型禁用 gutenberg 编辑器,你可以添加以下代码到你的插件或你的主题的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');
2j4z5cfb

2j4z5cfb2#

作为上面显示的其他用户,这是可能的,是的。另外,我想让下面的人知道。
在最新的WordPress或WordPress 5+ -(与 gutenberg )这2种方法有相同的效果,以删除古腾堡,但也有不同的选项时,这样做:
(将两者插入functions.php或自定义插件函数)
要从您的帖子中删除 gutenberg ,请键入:

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 编辑器完全从您的自定义文章类型,但也留下其他 meta框/等可用和未触及。
但是,如果您希望删除文本编辑器/文本区域本身-或其他默认选项,WordPress也认为这是 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的“编辑器”。这可以替换为其他metabox/数据选项。(作者/缩略图/修订等)

8dtrkrch

8dtrkrch3#

另一种方法是如果使用自定义型帖子。
注册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' );
zzzyeukh

zzzyeukh4#

如果是自定义post类型,则可以将参数设为'show_in_rest' => false,,post类型将具有经典编辑器

register_post_type('test', [
    'label'  => null,
    'labels' => [
        'name'              => 'Test',
        'singular_name'     => 'Test',
        'add_new'           => 'Add test',
        'add_new_item'      => 'Add test',
        'edit_item'         => 'Edit test',
        'new_item'          => 'New test',
        'view_item'         => 'Watch test',
        'search_items'      => 'Search test',
        'not_found'         => 'Not found',
    ],
    'description'       => 'Post for Test',
    'public'            => true,
    'has_archive'       => false,
    'hierarchical'      => true,
    'menu_icon'         => 'dashicons-megaphone',
    'show_in_rest'      => false,
    'supports'          => ['title', 'thumbnail', 'editor'],
]);

就像这样

vsmadaxz

vsmadaxz5#

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

<?php
$args = array(
  'label'        => 'Custom Posts',
  'show_ui'      => true,
  'show_in_rest' => false,          // ← Disables the block editor.
);
register_post_type( 'my-cpt-slug', $args );
3hvapo4f

3hvapo4f6#

如果你想从你的自定义帖子类型中删除编辑器或任何其他字段,那么可以在functions.php文件中使用以下代码

add_action( 'init', function() {
    remove_post_type_support( 'custom post name', 'filed name' );
}, 99);

相关问题