过滤古登堡组件,而不是块

时间:2021-11-19 作者:Lucius

我现在想知道是否有可能过滤古腾堡组件,而不是块。例如,我需要在每个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 行动

它工作得很好,但是,我找不到任何方法来对组件执行相同的操作。有可能吗?

非常感谢。

1 个回复
SO网友:Tom J Nowell

No, you cannot.

您可以向块工具栏或检查器添加额外控件,因为过滤器已添加到构造这些用户界面的代码中。可以将其视为在放置乐高建筑之前将其交给乐高建筑,作为添加额外砖块的机会。

然而,您所要求的是过滤单个组件,这是不可能的。除非实现了插槽/填充,或者添加了过滤器,否则您无法在运行时这样交换组件。

但如果你可以,那就不是个好主意。WP组件库是为了提供通用的原子用户界面构建块而构建的,其背后没有任何逻辑。这就是为什么您有一个按钮组件和一个发布按钮组件。按钮组件只是一个不起任何作用的哑按钮,是包装组件添加逻辑并将其集成到用户界面中。即使是原始面板组件也没有打开/关闭逻辑来切换自身,需要更多的代码来粘合在一起。

您的最终目标可能是可能的,但您在这里提出的解决方案并不是它。

相关推荐

迁移到新域名后出现JavaScript/AJAX错误

我已经将一个客户的站点从旧的垃圾域名迁移到新的域名,以更好地代表他们的业务。然而,自从移动以来,似乎出现了某种Javascript/Ajax问题。例如,我似乎无法切换选项卡(在ajax页面上),而;“快速编辑”;工具根本不起作用。当单击任何页面上的“快速编辑”链接时,我在F12控制台中发现此错误。Uncaught TypeError: Cannot read property \'hasClass\' of undefined at HTMLDocument.<anonymous&g