为某些页面 ID 禁用古腾堡编辑器

Disable Gutenberg editor for certain page ids

我需要在某些页面的编辑屏幕上禁用 gutenberg 编辑器。

我知道如何为 post 类型禁用它,就像所有页面一样:

/************************************************************ */
/* Disable Gutenberg for post type */

add_filter('use_block_editor_for_post_type', 'prefix_disable_gutenberg', 10, 2);
function prefix_disable_gutenberg($current_status, $post_type)
{
    if ( $post_type == 'page' ) return false;
    return $current_status;
}

但我只想为一个页面禁用它,假设 ID 为“1716”。

如何以编程方式为某些页面 ID 禁用古腾堡编辑器?

使用 use_block_editor_for_post 钩子是可能的。

您可以通过多种方式使用挂钩,但这里有一个例子;

将 excluded_ids 数组修改为您希望由经典编辑器编辑的 post_ids。(记住 $post 适用于所有 post 类型)

function disable_block_editor_for_page_ids( $use_block_editor, $post ) {

    $excluded_ids = array( 2374, 5378, 21091);
    if ( in_array( $post->ID, $excluded_ids ) ) {
        return false;
    }
    return $use_block_editor;
}
add_filter( 'use_block_editor_for_post', 'disable_block_editor_for_page_ids', 10, 2 );

请注意,您必须安装经典编辑器插件才能运行。

你也可以这样做:

add_filter( 'use_block_editor_for_post', 'disable_gutenberg', 10, 2 );

function disable_gutenberg( $can_edit, $post ) {
    if( $post->ID == '223' ) {
        return false;
    }
    return true;
}

当 returns 'false'、223 是页面 ID 时,Gutenberg 被禁用。 但如果您使用 acf,它可能会给您带来一些问题。这样用比较好

add_filter( 'use_block_editor_for_post', 'disable_gutenberg', 10, 2 );

function disable_gutenberg( $can_edit, $post ) {
    if( $post->post_type == 'page' && $post->ID == '223' ) {
        return true;
    }
    return false;
}

它仅在页面 的 id 为 223 上使用古腾堡。并在所有其他页面上禁用它。