J'utilise donc des blocs imbriqués dans Wordpress Gutenberg. J'applique un wrapper sur mes éléments qui appliquent une classe de conteneur d'amorçage. Évidemment, je ne voudrais que cela sur les blocs les plus externes, pas sur ceux à l'intérieur d'un bloc imbriqué.
Existe-t-il un moyen de savoir si le bloc actuel se trouve dans une InnerBlocks
définition d'un bloc parent? J'applique actuellement le wrapper à l'intérieur du blocks.getSaveElement
filtre.
Y a-t-il une meilleure manière de faire cela?
Pour le contexte: dans les versions précédentes de gutenberg, l'attribut layout était utilisé pour cela, mais il a depuis été supprimé. J'utilise la version 3.9.0.
Il s'agit d'une version abrégée de ma fonction 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);