我现在想知道是否有可能过滤古腾堡组件,而不是块。例如,我需要在每个DropDownMenu 组件,可通过更改;“控件”;变量
今天,如果需要向每个块添加新的Inspector控件,我可以使用:
var el = wp.element.createElement;
var withInspectorControls = wp.compose.createHigherOrderComponent( function (
BlockEdit
) {
return function ( props ) {
return el(
wp.element.Fragment,
{},
el( BlockEdit, props ),
el(
wp.blockEditor.InspectorControls,
{},
el( wp.components.PanelBody, {}, \'My custom control\' )
)
);
};
},
\'withInspectorControls\' );
wp.hooks.addFilter(
\'editor.BlockEdit\',
\'my-plugin/with-inspector-controls\',
withInspectorControls
);
然后用
enqueue_block_editor_assets 行动
它工作得很好,但是,我找不到任何方法来对组件执行相同的操作。有可能吗?
非常感谢。
SO网友:Tom J Nowell
No, you cannot.
您可以向块工具栏或检查器添加额外控件,因为过滤器已添加到构造这些用户界面的代码中。可以将其视为在放置乐高建筑之前将其交给乐高建筑,作为添加额外砖块的机会。
然而,您所要求的是过滤单个组件,这是不可能的。除非实现了插槽/填充,或者添加了过滤器,否则您无法在运行时这样交换组件。
但如果你可以,那就不是个好主意。WP组件库是为了提供通用的原子用户界面构建块而构建的,其背后没有任何逻辑。这就是为什么您有一个按钮组件和一个发布按钮组件。按钮组件只是一个不起任何作用的哑按钮,是包装组件添加逻辑并将其集成到用户界面中。即使是原始面板组件也没有打开/关闭逻辑来切换自身,需要更多的代码来粘合在一起。
您的最终目标可能是可能的,但您在这里提出的解决方案并不是它。