web-dev-qa-db-ja.com

グーテンベルクブロックで投稿メタデータを編集するにはどうすればいいですか?

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
  }
})
6
lookyhooky

私は答えを見つけたと思います ここregister_metaの最初の引数はpost型ではなくobject_typeです。私の場合はposttaxonomyではなく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の問題です。

4
lookyhooky