You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Gutenberg块无法保存渲染:最后两个块失效求助

解决自定义Gutenberg块前端不渲染问题

核心问题分析

你的问题出在两个关键点:PHP块注册时的脚本handle不匹配,以及JS中块的save函数返回格式不符合Gutenberg规范,这两个问题共同导致最后两个块无法在前端正常渲染。

具体修复步骤

1. 修正PHP块注册的脚本关联

你在PHP里给每个块指定了单独的editor-script(比如price-list),但实际只注册了misan-custom-blocks这一个脚本handle,其他handle根本不存在。修改gutenberg-blocks.php中的块注册代码,统一使用正确的脚本handle:

//register blocks
register_block_type('misan-custom-blocks/paragraph-with-title', [
    'editor-script' => 'misan-custom-blocks'
]);
register_block_type('misan-custom-blocks/company-numbers', [
    'editor-script' => 'misan-custom-blocks'
]);
register_block_type('misan-custom-blocks/opinions', [
    'editor-script' => 'misan-custom-blocks'
]);
register_block_type('misan-custom-blocks/contact-form', [
    'editor-script' => 'misan-custom-blocks'
]);
register_block_type('misan-custom-blocks/image-with-text', [
    'editor-script' => 'misan-custom-blocks'
]);
register_block_type('misan-custom-blocks/offers', [
    'editor-script' => 'misan-custom-blocks'
]);
register_block_type('misan-custom-blocks/price-list', [
    'editor-script' => 'misan-custom-blocks'
]);

2. 修正JS块的返回格式

Gutenberg块的save和edit函数要求返回单一根元素,你当前返回的是数组格式,会导致保存的HTML结构异常。修改priceList.js(以及对应的offers.js):

const {registerBlockType} = wp.blocks;

registerBlockType('misan-custom-blocks/price-list', {
    title: 'Price list',
    icon: 'list-view',
    category: 'extension-blocks',
    edit: ({attributes, setAttributes}) => {
        return (
            <section id={'price'}>
                <p>test</p>
            </section>
        );
    },
    save: ({attributes}) => {
        return (
            <section id={'price'}>
                <p>test</p>
            </section>
        );
    }
});

3. 重新打包并测试

确保修改后的JS文件被正确打包到dist/blocks.js,然后重新编辑页面:删除原有问题块,重新添加后保存,刷新前端页面即可看到效果。

内容的提问来源于stack exchange,提问作者Tsume

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:15:55