Entonces estoy usando bloques anidados en Wordpress Gutenberg. Estoy aplicando un contenedor en mis elementos que aplican una clase de contenedor de arranque. Obviamente, solo quiero eso en los bloques más externos, no en los que están dentro de un bloque anidado.
¿Hay alguna manera de saber si el bloque actual está dentro de una InnerBlocks
definición de un bloque padre? Actualmente estoy aplicando el contenedor dentro del blocks.getSaveElement
filtro.
¿Hay una mejor manera de hacer esto?
Para el contexto: en versiones anteriores de Gutenberg solía haber un atributo de diseño para lograr eso, pero desde entonces se ha eliminado. Estoy usando la versión 3.9.0.
Esta es una versión abreviada de mi función de contenedor:
namespace.saveElement = ( element, blockType, attributes ) => {
const hasBootstrapWrapper = hasBlockSupport( blockType.name, 'bootstrapWrapper' );
if (hasBlockSupport( blockType.name, 'anchor' )) {
element.props.id = attributes.anchor;
}
if (hasBootstrapWrapper) {
// HERE I NEED TO CHECK IF THE CURRENT ELEMENT IS INSIDE A INNERBLOCKS ELEMENT AND THEN APPLY DIFFERENT WRAPPER
var setWrapperInnerClass = wrapperInnerClass;
var setWrapperClass = wrapperClass;
if (attributes.containerSize) {
setWrapperInnerClass = wrapperInnerClass + ' ' + attributes.containerSize;
}
if (attributes.wrapperType) {
setWrapperClass = wrapperClass + ' ' + attributes.wrapperType;
}
const setWrapperAnchor = (attributes.wrapperAnchor) ? attributes.wrapperAnchor : false;
return (
newEl('div', { key: wrapperClass, className: setWrapperClass, id: setWrapperAnchor},
newEl('div', { key: wrapperInnerClass, className: setWrapperInnerClass},
element
)
)
);
} else {
return element;
}
};
wp.hooks.addFilter('blocks.getSaveElement', 'namespace/gutenberg', namespace.saveElement);