Bu yüzden Wordpress Gutenberg'de iç içe bloklar kullanıyorum. Önyükleme kabı sınıfı uygulayan öğelerime bir sarıcı uyguluyorum. Açıkçası bunu sadece en dıştaki bloklarda, iç içe bir bloğun içindeki bloklarda değil.
Geçerli bloğun InnerBlocks
bir ana bloğun Tanımı içinde olup olmadığını bilmenin bir yolu var mı ? Şu anda blocks.getSaveElement
Filtre içine sarıcı uyguluyorum .
Bunu yapmanın daha iyi bir yolu var mı?
Bağlam için: Önceki gutenberg versiyonlarında bunu başarmak için düzen niteliği vardı, ancak o zamandan beri kaldırıldı. Sürüm 3.9.0 kullanıyorum.
Bu benim sarma işlevinin kısaltılmış bir sürümüdür:
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);