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

自定义Gutenberg动态块无法保存富文本值的问题求助

Gutenberg动态块RichText字段保存后丢失问题解决

问题现象

自定义动态块中的RichText字段编辑时实时生效,保存按钮状态正常,无控制台错误,但刷新WordPress后台后,字段值消失,块恢复为初始占位符内容。

核心原因

动态块的save函数返回null,但block.json中content属性设置了source: html和selector: h2——Gutenberg会尝试从块的静态HTML输出提取属性值,而动态块没有静态保存内容,导致属性无法被序列化到块注释中。从请求体可见,保存后的块注释为<!-- wp:namespace/hero /-->,未携带任何属性数据。

解决方案

1. 修改block.json的属性定义

移除source和selector配置,让属性直接存储值(动态块无需从静态HTML提取属性):

{
    // ... 其他原有配置
    "attributes": {
        "content": {
            "type": "string",
            "default": ""
        }
    }
}

2. 完善render.php的属性渲染逻辑

在动态块的PHP渲染文件中,正确读取并安全输出content属性:

<?php
$content = isset( $attributes['content'] ) ? $attributes['content'] : '';
?>
<div class="h-96 bg-amber-200 flex p-20 wp-block-namespace-hero">
    <h2 class="mt-10"><?php echo wp_kses_post( $content ); ?></h2>
</div>

3. 验证修改效果

修改后保存页面,块注释会变为携带属性的格式:

<!-- wp:namespace/hero {"content":"你输入的富文本内容"} /-->

刷新后台后,RichText字段会正确加载已保存的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:39:51