Я расширил ядро / образ блока Гутенберга, добавив переключатель, позволяющий мне включить 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, но я бы скорее сделал это в Гутенберге.
Предложения?