Gutenberg默认参数未保存问题求助:如何让默认参数自动存储?
解决Gutenberg块默认属性不保存的问题
是的,完全可以让Gutenberg块的默认属性自动保存到块数据中,无需用户手动编辑就能直接在PHP中读取,避免重复定义默认值的麻烦。
实现步骤:
在块的JS注册代码中统一设置默认值
在registerBlockType的attributes配置里,给目标属性添加default字段。Gutenberg会自动把这个默认值写入块的存储数据(HTML注释中的块属性),哪怕用户从未编辑过该属性。示例代码:
wp.blocks.registerBlockType('your-namespace/custom-block', { title: '自定义链接块', attributes: { link: { type: 'string', default: 'Default value', // 在这里统一设置默认值 source: 'attribute', selector: 'a', attribute: 'href' } }, edit: (props) => { const { attributes, setAttributes } = props; return wp.element.createElement( wp.components.URLInput, { value: attributes.link, onChange: (newVal) => setAttributes({ link: newVal }) } ); }, save: (props) => { // 保存时必须正确关联属性与DOM元素,确保Gutenberg能捕获默认值 return wp.element.createElement( 'a', { href: props.attributes.link }, '点击跳转' ); } });PHP端直接读取属性
此时默认值已经被Gutenberg自动保存到块的attrs中,无需再做判断,直接读取即可:$formLink = $block['attrs']['link'];
注意事项:
- 对于已发布旧文章中的存量块(之前未设置默认值的),需要重新保存文章,Gutenberg才会补全默认属性;如果旧块数量较多,可以使用块迁移工具(
migrate函数)批量处理。 - 确保
save函数中正确关联属性与DOM元素,否则Gutenberg无法正确存储默认值。
内容的提问来源于stack exchange,提问作者Jorgs
相关产品推荐
相关产品推荐

