Gutenberg Handbook の指示に従って、投稿のメタデータを変更できるブロックを作成しようとしています。
setAttributes
からprops
関数を使って新しいデータを保存しようとしても、ページには保存されていますが、ハンドブックではソースがmeta
であるべきであると信じているので実際にはデータベースに保存されません。私は何かを見逃しているに違いありません、しかし私は助けるためにリソースを見つけることができません。
php:
$args = ...
register_post_type('event', $args);
register_meta('event', 'event_location', [
'show_in_rest' => true,
'single' => true,
'type' => 'string'
]);
javaScript:
registerBlockType('my-plugin/event-location', {
title: 'Event Location',
category: 'widgets',
attributes: {
location: {
type: 'string',
source: 'meta',
meta: 'event_location'
}
},
edit ({ className, attributes, setAttributes }) {
const { location } = attributes
function updateContent (e) {
setAttributes({ location: e.target.value })
}
return el(
'p',
{ className: className },
el(
'input',
{ value: location, onChange: updateContent }
)
)
},
save () {
return null
}
})
私は答えを見つけたと思います ここ 。 register_meta
の最初の引数はpost型ではなくobject_type
です。私の場合はpost
やtaxonomy
ではなくcomment
にします。 function description、found here は、WordPress 4.9.2以降、正しいパラメータはpost
です。切り替えたら、すべてうまくいきました。
register_meta('post', 'event_location', [
'show_in_rest' => true,
'single' => true,
'type' => 'string'
]);
また、 here は同じ問題に関するGithubの問題です。