我收到了这样的信息:
您的站点不包括对“mcm/菜单卡部分”块的支持。您可以保留此块,将其内容转换为自定义HTML块,或将其完全删除。
这发生在保存块并重新加载页面编辑器之后。很明显,wordpress并没有在注册的块上找到。
function mcm_register_menu_card_section_block() {
wp.blocks.registerBlockType( 'mcm/menu-card-section', {
title: 'Menu Card Section',
description: 'Add a section of your menu.',
category: 'mcm-blocks',
icon: 'list-view',
edit() {
return wp.element.createElement( 'div', null, 'Edit function output.' );
},
save() {
let template = wp.element.createElement( 'div', null, 'Save function output.' );
return template;
}
} );
}
window.addEventListener( 'load', () => {
mcm_register_menu_card_section_block();
});add_action( 'init', 'register' );
function register() {
wp_register_script(
'mcm-editor-menu-card-section',
plugins_url() . '/mcm/blocks/js/menu_card_section.js'
);
register_block_type(
'mcm/menu-card-section',
array(
'editor_script' => 'mcm-editor-menu-card-section',
)
);
}对可能发生的事情的一些猜测:
发布于 2020-01-04 10:31:38
js-文件没有按时执行。
在执行DOM load事件时,块编辑器已经解析了post内容,而该块当时还没有注册,所以它告诉您它不存在。
而不是:
window.addEventListener( 'load', () => {
mcm_register_menu_card_section_block();
});尝试:
wp.domReady(mcm_register_menu_card_section_block);在脚本中,注册代码不要忘记包含脚本使用的依赖项:
wp_register_script(
'mcm-editor-menu-card-section',
plugins_url() . '/mcm/blocks/js/menu_card_section.js',
array(
'wp-blocks',
'wp-dom-ready',
'wp-element',
)
);由于脚本是由register_block_type()函数排队的,它实际上应该在正确的位置开始并直接调用该函数:
mcm_register_menu_card_section_block();如果没有domReady,也应该能工作。如何使用domReady为第三方插件在需要时过滤注册留下了一个机会之窗。是否应该使用它还有待商榷:https://github.com/WordPress/gutenberg/issues/9757
https://wordpress.stackexchange.com/questions/355536
复制相似问题