Гутенберг Расширение ядра / изображения с помощью ошибки фильтра blocks.getSaveContent.extraProps - PullRequest
0 голосов
/ 25 января 2020

Я расширил ядро ​​/ образ блока Гутенберга, добавив переключатель, позволяющий мне включить alightbox.

Соответствующий код оборачивает элемент -

const addLightboxAttribute = ( element, block, attributes ) => {
    // Do nothing if it's another block than our defined ones.
    if ( ! enableLightboxOnBlocks.includes( block.name ) ) {
        return element;
    }

    if ( ! attributes.enableLightbox ) {
        return element;
    }

     let newElement = cloneElement(
         element,
         { className: element.props.className + ' ' + attributes.alignClass },
         element.props.children
     );

    return (
        <a href={ attributes.url} data-caption={attributes.lbCaption}>
            {newElement}
        </a>
    );
}

addFilter( 'blocks.getSaveElement', 'uikit3/image', addLightboxAttribute );

Этот блок работает как ожидается, кроме случаев, когда я добавляю пользовательский класс в область «Advanced». Тогда я получаю следующую ошибку:


Block validation: Block validation failed for `core/image`. Content generated by `save` function:




Жалуется, что отличается от. Я добавил тест css.

Я могу обойти эту проблему, изменив вывод через фильтр render_block со стороны php, но я бы скорее сделал это в Гутенберге.

Предложения?

...