Programmatisches Abfeuern von WordPress Gutenberg „Convert to Blocks“.

Lesezeit: 2 Minuten

Ich habe mehrere Roboter, die in Node.js geschrieben sind, um automatisch HTML-Inhalte zu generieren und sie mithilfe der REST-API in mehrere WordPress-Sites einzufügen. Vor kurzem wurde WordPress 5.0 offiziell veröffentlicht und Gutenberg wurde zum Standardeditor. Alle alten Posts sowie die von Robotern generierten werden in einem einzigen „Classic“-Block gekapselt.

Wie die meisten von uns bereits wissen, sollte zusätzliches Markup hinzugefügt werden, um die HTML-Elemente in Blöcke umzuwandeln, und es gab eine Schaltfläche „In Blöcke umwandeln“, um sie in der Gutenberg-Benutzeroberfläche in Blöcke umzuwandeln. Gibt es eine bequeme Möglichkeit (z. B. die Verwendung integrierter Funktionen), um die gleichen Dinge wie “Convert to Blocks” programmgesteuert zu tun, oder sollten wir diese Gutenberg-bezogenen Markups einzeln umschließen? Jede Hilfe sollte geschätzt werden

Vielleicht ist das ein bisschen spät, aber wenn jemand noch nach einer Lösung sucht, hier ist, wie man es macht.

Dieser Code geht davon aus, dass Ihr klassischer Block der erste ist:

var block = wp.data
      .select("core/editor")
      .getBlocks()[0];

wp.data.dispatch( 'core/editor' ).replaceBlocks(block.clientId, wp.blocks.rawHandler( 
  { HTML: wp.blocks.getBlockContent( block ) }
));

Wenn Sie dies für alle klassischen Blöcke tun möchten, iterieren Sie einfach die gesamten Blöcke und suchen Sie nach dem Blocknamen core/freeform um es so umzuwandeln:

wp.data.select("core/editor").getBlocks().forEach(function(block, blockIndex){
  if (block.name === "core/freeform"){
    wp.data.dispatch( 'core/editor' ).replaceBlocks(block.clientId, wp.blocks.rawHandler( 
      { HTML: wp.blocks.getBlockContent( block ) }
    ));    
  }
})

  • Gibt es ein npm-Paket, mit dem ich darauf zugreifen kann? wp vermutlich würde ich das aus einem npm-Paket importieren, oder?

    – Max Caroll

    13. Juli 2020 um 17:50 Uhr

  • @MaxCarroll Es gibt mehrere WordPress-Pakete (github.com/WordPress/gutenberg/tree/master/packages), die das wp global verwenden, aber je nachdem, wie Sie es tun, benötigen Sie sie möglicherweise nicht. Dieser Code scheint die Pakete „wp-blocks“, „wp-editor“ zu verwenden, die in die Standard-Wordpress-Installation kompiliert werden. developer.wordpress.org/block-editor/packages

    – Werden

    4. Dezember 2020 um 19:16 Uhr

  • Das hört sich so an, als ob es genau das sein sollte, was ich will, aber ich kann es nicht ganz zum Laufen bringen (selbst nach dem Aktualisieren von ‘core/editor’ auf ‘core/block-editor’). getBlocks gibt für mich immer ein leeres Array zurück, unabhängig davon, wie viele Blöcke im aktuellen Beitrag vorhanden sind. Nicht sicher, was ich falsch mache. GetBlocks zu früh anrufen? Ich habe auch versucht, es in wp.domReady( function() { };

    – MadtownLems

    26. Mai 2021 um 19:33 Uhr

1370340cookie-checkProgrammatisches Abfeuern von WordPress Gutenberg „Convert to Blocks“.

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

Privacy policy