如何为某些帖子类型禁用Gutenberg编辑器?

时间:2018-09-06 08:22:04

标签: php wordpress wordpress-gutenberg

WordPress在第5版中添加了 Gutenberg编辑器,并且默认情况下启用了Post和Page帖子类型。

默认情况下可能会在不久的将来为所有自定义帖子类型启用此功能,因此作为WordPress开发人员,我想知道如何针对我自己的自定义帖子类型禁用此编辑器?我想保留经典编辑器,以查看我通过插件或主题注册的帖子类型。

4 个答案:

答案 0 :(得分:3)

使用WordPress过滤器可以简单地禁用编辑器。

WordPress 5及更高版本

如果只想对自己的帖子类型禁用块编辑器,则可以将以下代码添加到主题的插件或functions.php文件中。

add_filter('use_block_editor_for_post_type', 'prefix_disable_gutenberg');
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');
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');

答案 1 :(得分: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' );

答案 2 :(得分:0)

与上面显示的其他用户一样,可以。另外,我想告知以下内容。

在最新的Wordpress或Wordpress 5+中-(使用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编辑器从您的自定义帖子类型中完全删除,但是其他meta框/等仍然可用且保持不变。

但是,如果您希望删除文本编辑器/文本区域本身-或其他默认选项,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的“编辑器”。可以用其他metabox / data选项代替。 (作者/缩略图/修订等)

答案 3 :(得分:0)

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

boss = 20
player = 20
def boss_battle():
    global boss
    global player
    boss_fight = input("Will you attack from the left, middle, or right? ").lower()
    if boss_fight == "left":
        boss = boss - 3
        player = player - 3
        print("Boss has taken 3 damamge, you have also taken 3 damage")
        boss_battle()
    elif boss_fight == "right":
        random_hit = (random.randint(1,6))
        if random_hit > 3:
            boss = boss - 7
            print("The enemy has taken 7 damage!! ")
            boss_battle()
        elif random_hit < 3:
            player = player - 7
            print("YOU MISSED! You have taken 7 damage! ")
            boss_battle()
    elif boss_fight == "middle":
        print("You missed! You take 2 damage. ")
        player = player - 2
        boss_battle()
    else:
        print("Please select a valid option")
        boss_battle()
    if boss == 0:
        print("You killed the enemy, you take the gold and lavish in the riches!")
    elif player == 0:
        print("You died!")
        cave_game()