그래서 Wordpress Gutenberg에서 중첩 블록을 사용하고 있습니다. 부트 스트랩 컨테이너 클래스를 적용하는 요소에 래퍼를 적용하고 있습니다. 분명히 중첩 블록 내부의 블록이 아닌 가장 바깥 쪽 블록에서만 원합니다.
현재 블록이 InnerBlocks
부모 블록 의 Definiton 안에 있는지 알 수있는 방법이 있습니까? 현재 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);
당신은 알아?
—
매튜 브라운 일명 Lord Matt