Gutenberg - Blöcke mit benutzerdefiniertem Skript entfernen / hinzufügen

8

Ich teste derzeit das neue Gutenberg-Plugin mit meinem eigenen Theme und Plugin. Mein Thema hat eine benutzerdefinierte Meta-Box mit einer Aktion für den Benutzer. Sobald der Benutzer auf diese Aktion klickt, wird der Beitragsinhalt vollständig gelöscht und dem standardmäßigen tinyMce-Editor ein neuer "benutzerdefinierter" Inhalt hinzugefügt.

Beispiel : tinymce.get ("Inhalt"). SetContent ("Mein benutzerdefinierter Inhalt");

Das funktioniert natürlich nicht mehr mit dem neuen Guteberg Editor und ich habe Mühe, eine Lösung zu finden.

Grundsätzlich versuche ich also, alle Blöcke / Inhalte aus dem Gutenberg-Editor zu entfernen und einen neuen Block (Text) mit meinen benutzerdefinierten Inhalten über Javascript hinzuzufügen. Hat jemand einen Hinweis, um mich in die richtige Richtung zu weisen?

Benmay
quelle
Die Gutenberg-Blöcke werden in einem Datenspeicher gespeichert. Hier ist eine gute Einführung in das riad.blog/2018/06/07/… , die zu einer Antwort führen könnte
Tom J Nowell

Antworten:

14

Es gibt wahrscheinlich einen einfacheren Weg, dies zu tun, und wenn dies nicht der Fall ist, sollten Sie ein Problem im Gutenberg GH Issue Tracker öffnen (die API ist nicht in Stein gemeißelt).

Da die API nicht in Stein gemeißelt ist, kann diese Antwort unbrauchbar sein, wenn sie endgültig fertig ist und zusammengeführt wird. Der erste und beste Ort, um GB-Fragen zu stellen, ist auf GitHub

Sie können alle Blöcke folgendermaßen entfernen:

wp.data.dispatch( 'core/editor' ).resetBlocks([]);

Sie können dann programmgesteuert einen neuen Block erstellen:

let block = wp.blocks.createBlock( 'core/paragraph' );

Fügen Sie Text hinzu:

block.attributes.content.push( 'hello world' );

Und fügen Sie es so ein:

wp.data.dispatch( 'core/editor' ).insertBlocks( block );

Bei weiterer Prüfung gibt es eine einfachere Methode:

let block = wp.blocks.createBlock( 'core/paragraph', { content: 'test' } );
wp.data.dispatch( 'core/editor' ).insertBlocks( block );
Tom J Nowell
quelle