古登堡编辑-模板不匹配错误

时间:2018-08-07 作者:Jim-miraidev

我更新了当前页面模板,使其被锁定,并使用了我创建的两个自定义块。

作用php

function my_add_template_to_posts() {
    $post_type_object = get_post_type_object( \'page\' );
    $post_type_object->template = array(
          array( \'jabgutenberg/bannerimage\'),
          array( \'jabgutenberg/section\'),
    );
$post_type_object->template_lock = \'all\'; 
}
add_action( \'init\', \'my_add_template_to_posts\' );
“Section”块允许您在其中添加尽可能多的块,因为它使用{templateLock:false}

( function( blocks, editor, components, i18n, element,title ) {

var el = wp.element.createElement,
    registerBlockType = wp.blocks.registerBlockType
    InnerBlocks = wp.editor.InnerBlocks;

registerBlockType( \'jabgutenberg/section\', {
    title: i18n.__(\'Section\'),
    icon: \'columns\',
    description: i18n.__(\'A section.\'),
    category: \'common\',
    edit: function edit() {
        return el(InnerBlocks, { templateLock: false });
    },
    save: function save() {
        return el(
            \'div\',
            null,
            el(InnerBlocks.Content, null)
        );
    },
} );   

} )(window.wp.blocks,window.wp.editor,window.wp.components,window.wp.i18n,window.wp.element,
);
问题是,每次在“Section”中添加额外的块时,都会出现错误

\'您的帖子内容与分配给帖子类型的模板不匹配。\'

enter image description here

是否有任何方法可以在不解锁模板的情况下停止此操作?

1 个回复
SO网友:grappler

这是一个known issue.

一种破解方法是完全禁用该块的验证。Chris Van Patten提供了以下内容code example:

/**
 * WordPress dependencies
 */
import { compose } from \'@wordpress/compose\';
import { withDispatch } from \'@wordpress/data\';
import { InnerBlocks } from \'@wordpress/editor\';

/**
 * Container block
 *
 * @return {Object}
 */
const Editor = () => (
    <InnerBlocks templateLock={ false } />
);

// This is a hack which forces the template to appear valid.
// See https://github.com/WordPress/gutenberg/issues/11681
const enforceTemplateValidity = withDispatch( ( dispatch, props ) => {
    dispatch( \'core/block-editor\' ).setTemplateValidity( true );
} );

export default compose(
    enforceTemplateValidity,
)( Editor );

结束

相关推荐

Custom templates vs page-slug

我目前一直在使用slug来设置页面模板,使用普通的层次结构例如,如果我想更改的页面模板http://www.example.com/about-us, 我会编辑关于我们的页面。php如果客户端要去更改页面slug,它将不再加载正确的模板。在WordPress后端使用“自定义模板”下拉列表是否更好?就这一点而言,最佳做法是什么?非常感谢