Então, eu estou usando blocos aninhados no Wordpress Gutenberg. Estou aplicando um invólucro nos meus elementos que aplicam uma classe de contêiner de autoinicialização. Obviamente, eu só queria isso nos blocos mais externos, não naqueles dentro de um bloco aninhado.
Existe uma maneira de saber se o bloco atual está dentro de uma InnerBlocks
definição de um bloco pai? Atualmente, estou aplicando o wrapper dentro do blocks.getSaveElement
filtro.
Existe uma maneira melhor de fazer isso?
Para o contexto: Nas versões anteriores do Gutenberg, costumava haver o atributo de layout para isso, mas ele foi removido. Estou usando a versão 3.9.0.
Esta é uma versão abreviada da minha função de wrapper:
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);