इसलिए मैं Wordpress Gutenberg में नेस्टेड ब्लॉक का उपयोग कर रहा हूं। मैं अपने तत्वों पर एक आवरण लागू कर रहा हूं जो बूटस्ट्रैप कंटेनर क्लास को लागू करता है। जाहिर है मैं केवल यही चाहूंगा कि सबसे बाहरी ब्लॉक पर, नेस्टेड ब्लॉक के अंदर वाले पर नहीं।
क्या यह जानने का कोई तरीका है कि क्या वर्तमान ब्लॉक InnerBlocks
पेरेंट ब्लॉक के एक निश्चित भाग के अंदर है ? मैं फ़िलहाल blocks.getSaveElement
फ़िल्टर के अंदर रैपर लगा रहा हूँ ।
क्या ऐसा करने के लिए इससे अच्छा तरीका है?
संदर्भ के लिए: पिछले गुटेनबर्ग संस्करणों में इसे प्राप्त करने के लिए लेआउट विशेषता हुआ करती थी, लेकिन इसे हटा दिया गया है। मैं संस्करण 3.9.0 का उपयोग कर रहा हूं।
यह मेरे आवरण समारोह का एक छोटा संस्करण है:
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);