移除默认Gutenberg块,但保留可复用块功能?

时间:2019-01-07 作者:user9664977

我在这里学习了一个教程:https://rudrastyh.com/gutenberg/remove-default-blocks.html 其中讨论了如何删除默认Gutenberg块,如下所示:

add_filter( \'allowed_block_types\', \'misha_allowed_block_types\', 10, 2 );


function misha_allowed_block_types( $allowed_blocks, $post ) {


$allowed_blocks = array(
    \'core/image\',
    \'core/paragraph\',
    \'core/heading\',
    \'core/list\'
);

if( $post->post_type === \'page\' ) {
    $allowed_blocks[] = \'core/shortcode\';
}

return $allowed_blocks;


}
因此,这将默认的Gutenberg块限制为图像、段落、标题和列表。然后,我将页面帖子类型设置为也允许使用短代码块。因此,这很好,但我现在遇到了一个问题,即它删除了可重用块的功能,而我不知道需要添加什么才能重新添加该功能。

我试着对那篇文章发表评论,但作者目前无法想出解决方案。我想知道在添加了上述代码片段之后,是否有人有什么想法可以将可重用块功能添加回来?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

可重用块在core/block 名称

我试图将其添加到allowed_block_types 过滤器,下面是一个示例:

add_filter( \'allowed_block_types\', \'wpse324908_allowed_block_types\', 10, 2 );

function wpse324908_allowed_block_types( $allowed_blocks, $post ) {    
   $allowed_blocks = array(
        \'core/block\', // <-- Include to show reusable blocks in the block inserter.
        \'core/image\',
        \'core/paragraph\',
    );     
    return $allowed_blocks;    
}
如果至少还包括两个其他块,则显示了块插入器中可重复使用的块:

Reusable

查看/wp-includes/js/dist/editor.js 例如,我们可以查看此支票core/block 关于在块插入器中包含可重用块:

var selectors_canIncludeReusableBlockInInserter = function canIncludeReusableBlockInInserter(state, reusableBlock, rootClientId) {

  if (!selectors_canInsertBlockTypeUnmemoized(state, \'core/block\', rootClientId)) {
    return false;
  }