Wordpress 如何将锚支架添加到芯块?

Wordpress 如何将锚支架添加到芯块?,wordpress,wordpress-gutenberg,Wordpress,Wordpress Gutenberg,我想为核心块添加锚(id)支撑。我在编辑器中尝试了下面的JS代码来更改封面块。在高级属性下正确添加锚场;但是,重新加载编辑页面会导致此块中包含意外或无效的内容错误 我还需要什么额外的钩子?这是否可能以简单/优雅的方式实现 function addBlockAnchor( settings, name ) { if ( name !== 'core/cover' ) { return settings; } return lodash.assign( {}

我想为核心块添加锚(id)支撑。我在编辑器中尝试了下面的JS代码来更改封面块。在高级属性下正确添加锚场;但是,重新加载编辑页面会导致此块中包含意外或无效的内容错误

我还需要什么额外的钩子?这是否可能以简单/优雅的方式实现

function addBlockAnchor( settings, name ) {
    if ( name !== 'core/cover' ) {
        return settings;
    }

    return lodash.assign( {}, settings, {
        supports: lodash.assign( {}, settings.supports, {
            anchor: true
        } ),
    } );
}
wp.hooks.addFilter(
    'blocks.registerBlockType',
    'my-plugin/addBlockAnchor',
    addBlockAnchor
);

我与@niklas answer的最终代码:

function addBlockAnchor( settings, name ) {
    if ( name !== 'core/cover' ) {
        return settings;
    }

    lodash.assign( settings, settings, {
        supports: lodash.assign( {}, settings.supports, {
            anchor: true
        } ),
        attributes: lodash.assign( {}, settings.attributes, {
            anchor: { type: 'string' }
        } ),

    } );

    return settings;
}

wp.hooks.addFilter(
    'blocks.registerBlockType',
    'norpel-blocks/addBlockAnchor',
    addBlockAnchor
);

还必须向块属性添加锚属性,如下所示。没有经过测试,但它应该可以工作

const addBlockAnchor = props => {
  if (props.attributes) { // Some blocks don't have attributes
    props.attributes = {
      ...props.attributes,
      anchor: {
        type: 'string'
      }
    }
  }
  return props
}

wp.hooks.addFilter(
  'blocks.registerBlockType',
  'namespace/with-anchor',
  addBlockAnchor
)

非常好,谢谢你!我对Wordpress很有经验,但是添加和修改块的新JS方法我并不熟悉。