最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Gutenberg Editor - Template Doesn't Match Error

programmeradmin2浏览0评论

I have updated the current page template so that it is locked and uses two of custom blocks that i have created.

function.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' );

The 'Section' block allows you to add as many blocks inside, as it uses {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.wpponents,window.wp.i18n,window.wp.element,
);

Thie issues is that everytime you add an extra block inside the 'Section' you get the error

'The content of your post doesn’t match the template assigned to your post type.'

Is there any way of stopping this without unlocking the template?

I have updated the current page template so that it is locked and uses two of custom blocks that i have created.

function.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' );

The 'Section' block allows you to add as many blocks inside, as it uses {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.wpponents,window.wp.i18n,window.wp.element,
);

Thie issues is that everytime you add an extra block inside the 'Section' you get the error

'The content of your post doesn’t match the template assigned to your post type.'

Is there any way of stopping this without unlocking the template?

Share Improve this question asked Aug 7, 2018 at 8:25 DesignMonkeyJimDesignMonkeyJim 3493 silver badges9 bronze badges 1
  • 1 While I believe Gutenberg is on-topic here, you might also want to post an issue on the GitHub repo: github/WordPress/gutenberg/issues Given that it's still in development, this could be a bug. – Jacob Peattie Commented Aug 7, 2018 at 12:44
Add a comment  | 

1 Answer 1

Reset to default 2

This is a known issue.

A hack would be to disable to the validation completely for the block. Chris Van Patten provided the following 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/WordPress/gutenberg/issues/11681
const enforceTemplateValidity = withDispatch( ( dispatch, props ) => {
    dispatch( 'core/block-editor' ).setTemplateValidity( true );
} );

export default compose(
    enforceTemplateValidity,
)( Editor );
发布评论

评论列表(0)

  1. 暂无评论
ok 不同模板 switch ($forum['model']) { /*case '0': include _include(APP_PATH . 'view/htm/read.htm'); break;*/ default: include _include(theme_load('read', $fid)); break; } } break; case '10': // 主题外链 / thread external link http_location(htmlspecialchars_decode(trim($thread['description']))); break; case '11': // 单页 / single page $attachlist = array(); $imagelist = array(); $thread['filelist'] = array(); $threadlist = NULL; $thread['files'] > 0 and list($attachlist, $imagelist, $thread['filelist']) = well_attach_find_by_tid($tid); $data = data_read_cache($tid); empty($data) and message(-1, lang('data_malformation')); $tidlist = $forum['threads'] ? page_find_by_fid($fid, $page, $pagesize) : NULL; if ($tidlist) { $tidarr = arrlist_values($tidlist, 'tid'); $threadlist = well_thread_find($tidarr, $pagesize); // 按之前tidlist排序 $threadlist = array2_sort_key($threadlist, $tidlist, 'tid'); } $allowpost = forum_access_user($fid, $gid, 'allowpost'); $allowupdate = forum_access_mod($fid, $gid, 'allowupdate'); $allowdelete = forum_access_mod($fid, $gid, 'allowdelete'); $access = array('allowpost' => $allowpost, 'allowupdate' => $allowupdate, 'allowdelete' => $allowdelete); $header['title'] = $thread['subject']; $header['mobile_link'] = $thread['url']; $header['keywords'] = $thread['keyword'] ? $thread['keyword'] : $thread['subject']; $header['description'] = $thread['description'] ? $thread['description'] : $thread['brief']; $_SESSION['fid'] = $fid; if ($ajax) { empty($conf['api_on']) and message(0, lang('closed')); $apilist['header'] = $header; $apilist['extra'] = $extra; $apilist['access'] = $access; $apilist['thread'] = well_thread_safe_info($thread); $apilist['thread_data'] = $data; $apilist['forum'] = $forum; $apilist['imagelist'] = $imagelist; $apilist['filelist'] = $thread['filelist']; $apilist['threadlist'] = $threadlist; message(0, $apilist); } else { include _include(theme_load('single_page', $fid)); } break; default: message(-1, lang('data_malformation')); break; } ?>