web-dev-qa-db-fra.com

Comment éditer une méta-donnée de poste dans un bloc de Gutenberg?

J'essaie de suivre les instructions du manuel Manuel de Gutenberg pour créer un bloc qui peut modifier les métadonnées d'un message.

Bien que, lorsque j'essaie d'utiliser la fonction setAttributes de props pour enregistrer les nouvelles données, celles-ci ont persisté sur la page, mais ne sont pas réellement sauvegardées dans la base de données, car je crois que le manuel l'indique s'il le devrait. la source est meta. Je dois manquer quelque chose, mais je ne peux pas trouver une ressource pour aider.

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

Je pense avoir trouvé la réponse ici . Le premier argument de register_meta n'est pas post type, mais object_type, ce qui dans mon cas devrait être post plutôt que taxonomy ou comment. La description de la fonction, trouvée ici , indique qu'à partir de WordPress 4.9.2, le paramètre correct est post. Une fois que j'ai changé, tout a fonctionné.

register_meta('post', 'event_location', [
    'show_in_rest' => true,
    'single' => true,
    'type' => 'string'
]);

Aussi, ici est une question de Github liée au même problème.

4
lookyhooky