WordPress Gutenberg 块:如何限制页面级块,但允许所有子级块

WordPress Gutenberg blocks: How to restrict page-level blocks, but allow all child-level blocks

在 WordPress 插件中,我创建了一些自定义 'layout' Gutenberg 块。这些基本上是包含其余页面内容的 'boxes'。我想限制用户仅将这些框添加到页面中,然后允许他们在其中放置 ANY 个子块。

我使用 allowed_block_types 过滤器找到了 how to limit Gutenburg blocks。这仅适用于限制用户将 'boxes' 添加到页面。

然后我找到了如何将 Gutenberg 块限制为仅允许特定的子块。即在 InnerBlocks 上,指定 allowedBlocks: ['core/paragraph','core/list','core/seperator',...] 以便 'boxes' 可以包含这些子块。

问题是 allowed_block_type 过滤器似乎覆盖了 allowedBlocks。

如何在 'page' 级别允许特定块,而在 'child' 级别允许其他块?

从我的 answer on WordPress StackExchange

交叉发布

简而言之,你不能。但是您可以通过使用仅包含您的块并被锁定的块模板来完成此操作。如果您的块有一个 InnerBlocks 实例,您可以将任何已注册的块添加到它。

add_action( 'init', 'insert_template' );
function insert_template() {
    $post_type_object = get_post_type_object( 'post' );
    $post_type_object->template =[ [ 'your-custom-block-name'] ];
    $post_type_object->template_lock = 'all';
}