Gutenberg gallery hook errors

时间:2019-01-06 作者:fefe

我试图修改古腾堡的图库块,并使用以下代码片段

export function defaultColumnsNumber( attributes ) {
    console.log(attributes.images.length)
    return Math.min( 3, attributes.images.length );
}

function modifyGalleryMarkup( element, blockType, attributes ) {

    if ( blockType.name !== \'core/gallery\' ) {
        return element;
    }

    const { images, columns = defaultColumnsNumber( attributes ), imageCrop, linkTo } = attributes;

    console.log(attributes)
    var newElement = wp.element.createElement(
        \'ul\',
        {
            \'className\': `lightbox columns-${ columns } ${ imageCrop ? \'is-cropped\' : \'\' }`,
        },
        attributes.images.map(
            function( image ) {
                return wp.element.createElement(
                    \'li\',
                    {
                        \'className\': \'blocks-gallery-item my-gallery-item\',
                    },
                    wp.element.createElement(
                        \'img\',
                        {
                            \'src\': image.url,
                        }
                    )
                )
            }
        )
    )

    return newElement
}

wp.hooks.addFilter(
    \'blocks.getSaveElement\',
    \'plugin/modify-gallery\',
    modifyGalleryMarkup
);
我可以保存它,但在重新加载页面时,控制台中出现以下错误

Block validation failed for `core/gallery`

Expected:

<ul class="lightbox columns-0 is-cropped"></ul>

Actual:

<ul class="lightbox columns-3 is-cropped">< ....
我的代码片段中缺少了什么?

1 个回复
SO网友:T.Todua

似乎当您修改现有块的HTML时,它将不再被验证。相反,您可以尝试创建自己的块。看这里是a good approachhere too.

相关推荐

OOP development and hooks

我目前正在为Wordpress编写我的第一个OOP插件。为了帮助我找到一点结构,a boiler plate 这为我奠定了基础。在里面Main.php 有一种方法可以为管理员加载JS和CSS资产:/** * Register all of the hooks related to the admin area functionality * of the plugin. * * @since 0.1.0 * @access private