我得到的信息是:
您的站点不支持“mcm/菜单卡部分”块。您可以保持此块不变,将其内容转换为自定义HTML块,或将其完全删除。
保存块并重新加载页面编辑器后会发生这种情况。显然wordpress无法识别已注册的块。
js file
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();
});
plugin.php
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\',
)
);
}
对可能发生的事情的一些猜测:
我在js文件中犯了一个错误,js文件没有按时执行
最合适的回答,由SO网友:websevendev 整理而成
js文件未按时执行
当DOMload 事件执行时,块编辑器已解析帖子内容,此时块尚未注册,因此它会告诉您它不存在。
而不是:
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