ดังนั้นฉันจึงใช้บล็อกซ้อนใน Wordpress Gutenberg ฉันกำลังใช้ wrapper กับองค์ประกอบที่ใช้คลาส bootstrap container เห็นได้ชัดว่าฉันต้องการเพียงแค่นั้นในบล็อกด้านนอกไม่ได้อยู่ในบล็อกที่ซ้อนกัน
มีวิธีที่จะทราบว่าบล็อกปัจจุบันอยู่ในInnerBlocks
Definiton ของบล็อกหลักหรือไม่? ฉันกำลังใช้ wrapper ภายในblocks.getSaveElement
ตัวกรอง
มีวิธีที่ดีกว่าในการทำเช่นนี้?
สำหรับบริบท: ในรุ่นกูเทนแบร์กก่อนหน้านี้เคยมีคุณลักษณะเค้าโครงเพื่อให้บรรลุ แต่หลังจากนั้นก็ถูกลบทิ้งไป ฉันใช้เวอร์ชั่น 3.9.0
นี่เป็นฟังก์ชั่น 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);