it-swarm.com.de

Wie bearbeite ich Post-Metadaten in einem Gutenberg-Block?

Ich versuche, den Anweisungen im Gutenberg-Handbuch zu folgen, um einen Block zu erstellen, der Metadaten eines Posts ändern kann.

Wenn ich versuche, die setAttributes -Funktion von props zu verwenden, um die neuen Daten zu speichern, bleiben diese auf der Seite erhalten, werden jedoch nicht zurück in der Datenbank gespeichert, da das Handbuch meines Erachtens dies vorsieht, wenn die Quelle meta ist. Ich muss etwas vermissen, aber ich kann keine Ressource finden, um zu helfen.

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

Denke, ich habe die Antwort gefunden hier . Das erste Argument für register_meta ist nicht post type, sondern object_type. In meinem Fall sollte post und nicht taxonomy oder comment sein. Die Funktionsbeschreibung, gefunden hier , besagt ab WordPress 4.9.2, dass der richtige Parameter post ist. Sobald ich es schaltete, funktionierte alles.

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

Außerdem ist hier ein Github-Problem, das sich auf dasselbe Problem bezieht.

4
lookyhooky