Javascript 从古腾堡区块读取并保存WP post元数据字段数据

Javascript 从古腾堡区块读取并保存WP post元数据字段数据,javascript,reactjs,wordpress,wordpress-gutenberg,gutenberg-blocks,Javascript,Reactjs,Wordpress,Wordpress Gutenberg,Gutenberg Blocks,我以中的代码为例。 可以读取数据,但不能保存数据 代码: const{Component,Fragment}=wp.element; 常数{ RichText, 检查控制, 面板颜色设置, 对齐工具栏, 区块控制, }=wp.editor; const{Button,PanelBody,SelectControl,TextControl}=wp.components; 常数{{{}=wp.i18n; 常量{registerBlockType}=wp.blocks; const{withSele

我以中的代码为例。 可以读取数据,但不能保存数据

代码:

const{Component,Fragment}=wp.element;
常数{
RichText,
检查控制,
面板颜色设置,
对齐工具栏,
区块控制,
}=wp.editor;
const{Button,PanelBody,SelectControl,TextControl}=wp.components;
常数{{{}=wp.i18n;
常量{registerBlockType}=wp.blocks;
const{withSelect,withDispatch}=wp.data;
类检查器扩展组件{
建造师(道具){
超级(…参数);
}
render(){
常量背景颜色=[
{颜色:“#525252”,名称:“ЧЧы”},
{颜色:“#872d2d”,名称:“Ацццццац”},
{颜色:“#e49312”,名称:“Ацццжццц”},
{颜色:“#bab3a6”,名称:“Ацццццццццццццц,
];
常量fontSizeOptions=[
{值:“14px”,标签:{(“14px”)},
{值:“16px”,标签:{(“16px”)},
{值:“18px”,标签:{(“18px”)},
{值:“22px”,标签:{(“22px”)},
{值:“28px”,标签:{(“28px”)},
];
常数填充选项=[
{值:“0px”,标签:{(“0px”)},
{值:“10px”,标签:{(“10px”)},
{值:“25px”,标签:{(“25px”)},
{值:“50px”,标签:{(“50px”)},
];
常量填充底部选项=[
{值:“0px”,标签:{(“0px”)},
{值:“10px”,标签:{(“10px”)},
{值:“25px”,标签:{(“25px”)},
{值:“50px”,标签:{(“50px”)},
];
常数{
设置属性,
属性:{text\u color,font\u size,padding\u top,padding\u bottom},
}=这是道具;
让PluginMetaFields=(道具)=>{
返回(
props.onMetaFieldChange(值)}
/>
);
};
PluginMetaFields=with选择((选择)=>{
返回{
文本\元字段:选择(“核心/编辑器”)。getEditedPostAttribute(“元”)[
“\u myprefix\u text\u元字段”
],
};
})(PluginMetaFields);
PluginMetaFields=withDispatch((dispatch)=>{
返回{
onMetaFieldChange:(值)=>{
调度(“核心/编辑”).editPost({
meta:{u myprefix\u text\u metafield:value},
});
},
};
})(PluginMetaFields);
返回(
setAttributes({text_color:value}),
标签:_399;(“ццццццццццаа”),
},
]}
/>
this.props.setAttributes({font\u size:value})
/>
this.props.setAttributes({padding\u top:value})
}
/>
this.props.setAttributes({padding\u bottom:value})
}
/>
);
}
}
类HeadlineBlock扩展组件{
render(){
常数{
属性:{
大字标题
文字颜色,
字体大小,
在你的头顶上,
把你的屁股垫起来,
对齐
},
设置属性,
}=这是道具;
const onChangeAlignment=(newAlignment)=>{
this.props.setAttributes({
对齐方式:newAlignment==未定义?“无”:newAlignment,
});
};
返回[
,
{
}
setAttributes({headline:value})}
/>
,
];
}
}
registerBlockType(“amm自定义块/测试块”{
标题:u_;(“ббббббббббimk_”),
图标:“盾牌”,
类别:“AMM”,
属性:{
标题:{
键入:“字符串”,
},
对齐:{
键入:“字符串”,
默认值:“无”,
},
文字颜色:{
键入:“字符串”,
默认值:“525252”,
},
字体大小:{
键入:“字符串”,
默认值:“14px”,
},
顶部填充物:{
键入:“字符串”,
默认值:“50px”,
},
底部填充:{
键入:“字符串”,
默认值:“0px”,
},
},
编辑:标题栏,
保存:功能(道具){
常数{
属性:{
大字标题
文字颜色,
字体大小,
在你的头顶上,
把你的屁股垫起来,
对齐
},
}=道具;
返回(
{headline&&!!headline.length&&(
)}
);
},

});元字段\u myprefix\u text\u metafield是一个受保护的字段,因为它以“\u”(下划线)开头。这就是为什么您可以用select()读取值,但不通过auth_回调就不能用dispatch()保存它

要保存到受保护的字段,例如:


本教程中有一个示例,您如下所示:

或者,如果您的元字段不需要保护/私有:将元字段重新注册为myprefix\u text\u metafield(名称中没有下划线,也没有auth\u回调),您当前的代码将正常工作,例如:

<?php
register_post_meta( 'post', 'myprefix_text_metafield', array(
    'show_in_rest' => true,
    'single' => true,
    'type' => 'string'
);
?>

元字段\u myprefix\u text\u元字段是一个受保护的字段,因为它以“\u”(下划线)开头。这就是为什么您可以用select()读取值,但不通过auth_回调就不能用dispatch()保存它

要保存到受保护的字段,例如:


本教程中有一个示例,您如下所示:

或者,如果您的元字段不需要保护/私有:将元字段重新注册为myprefix\u text\u metafield(名称中没有下划线,也没有auth\u回调),您当前的代码将正常工作,例如:

<?php
register_post_meta( 'post', 'myprefix_text_metafield', array(
    'show_in_rest' => true,
    'single' => true,
    'type' => 'string'
);
?>