如何仅当您在自定义内部块中时才允许选择核心Gutenberg块

时间:2020-10-30 作者:kanlukasz

通过添加一个新帖子,我们从一开始就可以访问所有核心模块。我想限制这一点,并防止一些核心块在主级别上使用。它们应该只在我的自定义内部块中可用。

我得到了一些关于以下方面的建议:

使用template 具有init 使用parent 自定义块中的属性,但所有这些都不会限制主级别块的可用性

我想可能是隐藏块,这取决于插入器在DOM 结构可能是一个想法,但我不确定这是否是一个好的方向。

2 个回复
SO网友:Welcher

您需要筛选帖子类型的模板:

add_action( \'init\', \'setup_template\' );

function setup_template() {
    $post_object = get_post_type_object( \'post\' );
    $post_object->template = [ [ \'your/custom/block\' ] ];
    $post_object->template_lock = \'all\';
}
这将使用自定义块的单个实例预填充帖子,并锁定其不被更改。

通过锁定它,他们无法插入任何顶级块,但仍可以将项目插入到自定义块中。还有更多info in the docs 关于锁定,您可能需要insert 而不是all 取决于你的意图。

希望有帮助。

SO网友:Towhidul Islam

如果我正确理解你的帖子,我相信你正在寻找ALLOWED_BLOCKS 所有物在下面的内部模块中使用此选项。

const ALLOWED_BLOCKS = [ \'core/image\', \'core/paragraph\' ];
<InnerBlocks
    allowedBlocks={ ALLOWED_BLOCKS }
/>
您可以在此处找到更多信息https://developer.wordpress.org/block-editor/tutorials/block-tutorial/nested-blocks-inner-blocks/#allowed-blocks

相关推荐