Wie füge ich einen Gutenberg-Block in post_content ein, wenn wp_insert_post() verwendet wird?

Lesezeit: 3 Minuten

Benutzer-Avatar
Olivier

Ich möchte einen Gutenberg-Block in PHP generieren.

Ich entwickle derzeit ein WordPress-Plugin, das Videos von YouTube importiert und für jedes Video einen Beitrag erstellt. Ich kann das YouTube-Video in den post_content einfügen, aber wenn ich den Beitrag mit dem Gutenberg-Editor bearbeite, wird er nicht als Block angezeigt.

Ich habe den größten Teil des “Block Editor Handbook” hier gelesen https://developer.wordpress.org/block-editor/
Aber ich kann nichts finden, außer wie man einen benutzerdefinierten Block erstellt. Ich habe auch bei Google gesucht, aber alles, was ich gefunden habe, drehte sich auch um das Erstellen von benutzerdefinierten Blöcken. Ich habe jedoch festgestellt, dass Gutenberg-Blöcke in post_content als HTML-Kommentar gespeichert sind, aber der Kommentar scheint mit js über den Gutenberg-WYSIWYG-Editor generiert zu werden.

Ich weiß, dass ich einen Beitrag mit den Blöcken erstellen und den post_content aus meiner Datenbank kopieren und dann als “Vorlage” verwenden könnte, aber ich denke nicht, dass dies der richtige Weg ist.

Gibt es eine Dokumentation zur Verwendung der mit WordPress gelieferten Blöcke (z. B. Einbetten, Absatz) und zum Generieren des HTML-Kommentars, der in post_content mit PHP gespeichert wird? Ist es überhaupt möglich?

  • Sie waren ziemlich nah dran, den post_content als “Vorlage” zu verwenden. Es gibt 2 praktische Funktionen, die Sie verwenden können. parse_blocks() wodurch der Inhalt der HTML-Kommentare in tatsächliche PHP-Arrays konvertiert wird, die die Blöcke darstellen, und render_block() Dadurch werden die Arrays wieder in den Inhalt umgewandelt, wenn er in der DB gespeichert wird. Hier ist ein schöner Artikel über diese Funktionen billerickson.net/access-gutenberg-block-data

    – Jules Colle

    8. August 2020 um 19:39 Uhr

Wenn Sie einen YouTube-Block manuell hinzufügen, klicken Sie im Menü „Tools & Optionen“ (rechte Seite) auf die Ansicht „Code-Editor“. In der Code-Editor-Ansicht sehen Sie den HTML-Code, den der Editor benötigt, um den Block korrekt zu analysieren.

Zum Beispiel:

<!-- wp:core-embed/youtube {"url":"https://www.youtube.com/watch?v=VIDEOID","type":"video","providerNameSlug":"youtube","className":"wp-embed-aspect-16-9 wp-has-aspect-ratio"} -->
<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
https://www.youtube.com/watch?v=VIDEOID
</div></figure>
<!-- /wp:core-embed/youtube -->

  • Es ist bequemer als in der Datenbank zu suchen, aber es sieht immer noch wie eine Problemumgehung aus. Ich wünschte, es gäbe eine andere Lösung, wenn ich dies für jeden Block tun muss, den ich zum Erstellen eines Beitrags verwenden möchte, wird es etwas mühsam sein.

    – Olivier

    20. Oktober 2019 um 15:44 Uhr


  • Ich denke, ein Teil der Logik für Gutenberg könnte von der verwendeten Javascript-Bibliothek generiert werden. Kann das jemand bestätigen?

    – Max Caroll

    13. Juli 2020 um 10:18 Uhr

Benutzer-Avatar
jrgd

Heute musste ich den Inhalt von Gutenberg-Blöcken programmgesteuert aktualisieren.

Ich habe zwei Methoden verwendet:

  • parse_blocks() um das vorhandene Array zu lesen, das ich wie jedes Array in PHP ändern könnte.
  • render_blocks() um dann den Inhalt zum Beitrag post_content hinzuzufügen; Das Post-Array kann dann über gespeichert werden wp_update_post().

Das Lesen dieses Artikels war hilfreich https://www.billerickson.net/access-gutenberg-block-data/

Mein eigenes Projekt beinhaltete die Bearbeitung von benutzerdefinierten Feldern von acf zu anderen benutzerdefinierten Beitragstypen innerhalb von Blöcken, aber der Prozess sollte ziemlich ähnlich sein. In Bezug auf das Projekt von OP: Ich würde vorschlagen, einen ersten Beitrag manuell zu erstellen, um die Vorlage für ein Array (parse_block) zu generieren. Dann sollte das Anpassen dieses Arrays relativ trivial sein.

1371000cookie-checkWie füge ich einen Gutenberg-Block in post_content ein, wenn wp_insert_post() verwendet wird?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy