Увольнение Wordpress Гутенберга "Конвертировать в блоки" программно - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть несколько роботов, написанных на Node.js, для автоматической генерации HTML-содержимого и размещения его на нескольких сайтах Wordpress с использованием REST API.Недавно Wordpress 5.0 был официально выпущен, и Гутенберг стал редактором по умолчанию.Все старые сообщения, а также сообщения, сгенерированные роботами, будут инкапсулированы в один «классический» блок.

Как многие из нас уже знают, следует добавить дополнительную разметку для преобразования элементов HTML в блоки,и была кнопка «Преобразовать в блоки», чтобы преобразовать их в блоки в пользовательском интерфейсе Гутенберга.Есть ли какой-нибудь удобный способ (скажем, с использованием встроенных функций) программно выполнять те же действия, что и «Преобразовать в блоки», или мы должны обернуть эти связанные с Гутенбергом разметки одну за другой?Любая помощь должна цениться

1 Ответ

0 голосов
/ 23 февраля 2019

Может быть, это немного поздно, но если кто-то все еще ищет решение, вот как вы это делаете.

Этот код предполагает, что ваш классический блок является первым:

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 ) }
));

Если вы хотите сделать это для всех классических блоков, просто итерируйте общие блоки и ищите имя блока core/freeform, чтобы преобразовать его следующим образом:

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 ) }
    ));    
  }
})
...