如何为某些 post 类型禁用古腾堡/块编辑器?
How to disable Gutenberg / block editor for certain post types?
WordPress 在其第 5 个版本中添加了 Gutenberg / block editor,默认情况下启用 Post 和 Page post 类型。
它可能在不久的将来默认为所有自定义 post 类型启用,所以作为 WordPress 开发人员,我想知道如何为我自己的自定义 post 类型禁用此编辑器?我想为我从插件或主题中注册的 post 类型保留经典编辑器。
可以使用 WordPress 过滤器简单地禁用编辑器。
WordPress 5 及更高版本
如果您只想为您自己的 post 类型禁用块编辑器,您可以将以下代码添加到您的插件或主题的 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 之前)
如果您只想为自己的 post 类型禁用古腾堡编辑器,您可以将以下代码添加到您的插件或主题的 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');
另一种方式,如果您使用 自定义 post 类型 。
注册 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' );
与上面显示的其他用户一样,可能是。另外,我想告知以下内容。
在最新的 Wordpress 或 Wordpress 5+ - (With Gutenberg) 这两种方法与删除 Gutenberg 的效果相同,但在这样做时也有不同的选择:
(同时插入 functions.php 或自定义插件函数)
要从您的 post 中删除古腾堡,请输入:
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;
}
以上将从您的自定义 post 类型中完全删除 Gutenberg 编辑器,但也会保留其他元 boxes/etc 可用且保持不变。
但是,如果您希望删除文本 editor/text 区域本身 - 或其他默认选项,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 的 'editor'。这可以替换为其他 metabox/data 选项。 (作者/缩略图/修订等)
如果您想从自定义 post 类型中删除编辑器或任何其他字段,请在 functions.php 文件
中使用此代码
add_action( 'init', function() {
remove_post_type_support( 'custom post name', 'filed name' );
}, 99);
由于您在插件中注册了自定义 post 类型,禁用块编辑器的最快解决方案是设置选项 show_in_rest
to 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 );
WordPress 在其第 5 个版本中添加了 Gutenberg / block editor,默认情况下启用 Post 和 Page post 类型。
它可能在不久的将来默认为所有自定义 post 类型启用,所以作为 WordPress 开发人员,我想知道如何为我自己的自定义 post 类型禁用此编辑器?我想为我从插件或主题中注册的 post 类型保留经典编辑器。
可以使用 WordPress 过滤器简单地禁用编辑器。
WordPress 5 及更高版本
如果您只想为您自己的 post 类型禁用块编辑器,您可以将以下代码添加到您的插件或主题的 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 之前)
如果您只想为自己的 post 类型禁用古腾堡编辑器,您可以将以下代码添加到您的插件或主题的 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');
另一种方式,如果您使用 自定义 post 类型 。
注册 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' );
与上面显示的其他用户一样,可能是。另外,我想告知以下内容。
在最新的 Wordpress 或 Wordpress 5+ - (With Gutenberg) 这两种方法与删除 Gutenberg 的效果相同,但在这样做时也有不同的选择:
(同时插入 functions.php 或自定义插件函数)
要从您的 post 中删除古腾堡,请输入:
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;
}
以上将从您的自定义 post 类型中完全删除 Gutenberg 编辑器,但也会保留其他元 boxes/etc 可用且保持不变。
但是,如果您希望删除文本 editor/text 区域本身 - 或其他默认选项,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 的 'editor'。这可以替换为其他 metabox/data 选项。 (作者/缩略图/修订等)
如果您想从自定义 post 类型中删除编辑器或任何其他字段,请在 functions.php 文件
中使用此代码add_action( 'init', function() {
remove_post_type_support( 'custom post name', 'filed name' );
}, 99);
由于您在插件中注册了自定义 post 类型,禁用块编辑器的最快解决方案是设置选项 show_in_rest
to 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 );