为特定帖子类型启用Gutenberg(block)编辑器需要以下条件:
必须在REST API中启用post类型,因为Gutenberg使用REST API。为此,您需要设置show_in_rest
参数到true
注册帖子类型时—看见register_post_type()
.
帖子类型必须支持编辑器,否则编辑器将不会出现在帖子编辑屏幕上。为此,您需要添加editor
到supports
注册post类型时的参数(它是一个数组)。
如您所想,您可以通过register_post_type_args
hook. 但是,您覆盖了错误的参数:rewrite
, 实际上没有show_in_rest
或supports
参数
我已经说明了应该重写/设置的正确参数,因此这里有一个基于您的代码的工作示例—请注意,使用严格的比较(例如。===
在表达式(或条件语句)中,建议将变量放在右边(例如。\'value\' === $my_var
而不是$my_var === \'value\'
):
function ux_portfolio_block_editor( $args, $post_type ) {
if ( \'featured_item\' === $post_type ) {
// 1. Enable in the REST API.
$args[\'show_in_rest\'] = true;
// 2. Add the editor support.
if ( empty( $args[\'supports\'] ) || ! is_array( $args[\'supports\'] ) ) {
$args[\'supports\'] = [ \'editor\' ];
} elseif ( ! in_array( \'editor\', $args[\'supports\'] ) ) {
$args[\'supports\'][] = \'editor\';
}
}
return $args;
}
自定义分类法怎么样
嗯,它与post类型类似,只是:
使用register_taxonomy_args
hook 用于覆盖分类法的参数。
分类法不使用supports
参数,因此要在块编辑器(在后期编辑屏幕上)中启用分类法(选择器),只需设置show_in_rest
参数到true
注册分类时(请参阅register_taxonomy()
) 或重写其参数时。
所以这里有一个分类法的例子block_cat
:
function ux_portfolio_block_cat_editor( $args, $taxonomy ) {
if ( \'block_cat\' === $taxonomy ) {
$args[\'show_in_rest\'] = true;
}
return $args;
}
add_filter( \'register_taxonomy_args\', \'ux_portfolio_block_cat_editor\', 20, 2 );