5

我有几个用 Node.js 编写的机器人来自动生成 HTML 内容并使用 REST API 将它们放入多个 Wordpress 站点。最近 Wordpress 5.0 正式发布,Gutenberg 成为了默认编辑器。所有旧帖子以及机器人生成的帖子都将封装在一个“经典”块中。

正如我们大多数人已经知道的那样,应该添加额外的标记来将 HTML 元素转换为块,并且在 Gutenberg UI 中有一个“转换为块”按钮可以将它们转换为块。是否有任何方便的方法(比如使用内置函数)以编程方式执行与“转换为块”相同的操作,或者我们应该将那些与古腾堡相关的标记一一包装?任何帮助都应该不胜感激

4

1 回答 1

4

可能这有点晚了,但如果有人仍在寻找解决方案,这就是你的做法。

此代码假定您的经典块是第一个:

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 ) }
    ));    
  }
})
于 2019-02-23T10:59:40.580 回答