定义自定义区块时,可以使用 block.json 中的 inserter 属性,控制用户能否插入该区块,或让它只能通过程序添加。
有些情况下,自定义区块显得过于复杂,区块变体才是更合适的方案。例如,outreach 频道的一位用户希望给一个仅在模板中使用的区块添加属性,再根据该属性是否存在,加入一些自定义功能。
这正适合使用区块变体。问题在于,他们无法让这个变体从插入器中隐藏。
经过查找,可以在 registerBlockVariation 中将 scope 属性设置为 block,以隐藏该变体。下面的代码为段落区块注册了 paragraph-red 变体,但用户无法在编辑器的插入器中选用它。
import { registerBlockVariation } from '@wordpress/blocks';
registerBlockVariation( 'core/paragraph', {
name: 'paragraph-red',
title: 'Red Paragraph',
attributes: {
textColor: 'vivid-red',
},
isActive: [ 'textColor' ],
scope: [ 'block' ],
} );
scope: [ 'block' ] 是这里的关键设置。分栏(Columns)和查询(Query)等区块会使用这个值来筛选特定区块变体。筛选出的变体会传递给实验性的 BlockVariationPicker 组件;该组件负责展示变体,并让用户从中选择。对于其他区块的变体,scope 属性则是一种让它们从插入器中隐藏的实用办法。
相关链接
感谢 @ndiego 和 @greenshady 审阅这段示例。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END











暂无评论内容