注册区块变体,同时在插入器中隐藏它

定义自定义区块时,可以使用 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
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容