如何扩展自定义(非核心)块?

时间:2020-05-10 作者:Siddharth Thevaril

我创建了几个工作正常的自定义块。

我计划让这些块具有公共属性,并且我正在使用blocks.registerBlockType 过滤器添加属性,以下是我的代码:

import { blocksWithSharedAttributes } from \'../blocks-wth-shared-attributes.jsx\'; // an array of names of custom blocks.
const { addFilter } = wp.hooks;

const addToggleRenderBlockAttribute = ( settings, name ) => {

    if ( ! blocksWithSharedAttributes.includes( name ) ) {
        return settings; // This callback returns here. :(
    }

    settings.attributes = Object.assign( settings.attributes, {
        toggleBlockRender: {
            type: \'boolean\',
            default: false,
        },
    } );

    return settings;
};

addFilter( \'blocks.registerBlockType\', \'someNamespace/attribute/toggleBlockRender\', addToggleRenderBlockAttribute );
我面临的问题是name 参数没有我创建的任何自定义块,因此回调在第7行返回。

这个name 参数只有core/ 块。如何使自定义块显示在过滤器中?

1 个回复
SO网友:Siddharth Thevaril

我找到了解决办法。

addFilter( \'blocks.registerBlockType ) 需要在调用之前调用registerBlockType.