Vì vậy, tôi đang sử dụng các khối lồng nhau trong Wordpress Gutenberg. Tôi đang áp dụng một trình bao bọc trên các phần tử của tôi áp dụng lớp container bootstrap. Rõ ràng tôi chỉ muốn điều đó ở các khối ngoài cùng, không phải trên các khối bên trong một khối lồng nhau.
Có cách nào để biết khối hiện tại có nằm trong InnerBlocks
Definiton của khối cha không? Tôi hiện đang áp dụng trình bao bọc bên trong blocks.getSaveElement
Bộ lọc.
Có cách nào tốt hơn để làm điều này?
Đối với ngữ cảnh: Trong các phiên bản gutenberg trước đây từng có thuộc tính bố cục để đạt được điều đó, nhưng nó đã bị xóa. Tôi đang sử dụng Phiên bản 3.9.0.
Đây là phiên bản rút gọn của chức năng trình bao bọc của tôi:
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);