以编程方式触发 Wordpress Gutenberg“转换为块”

kyc*_*ung 5 wordpress wordpress-gutenberg gutenberg-blocks

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

正如我们大多数人已经知道的那样,应该添加额外的标记来将 HTML 元素转换为块,并且在 Gutenberg UI 中有一个“转换为块”按钮可以将它们转换为块。有没有什么方便的方法(比如使用内置函数)以编程方式做与“转换为块”相同的事情,或者我们应该一个一个地包装那些与古腾堡相关的标记?任何帮助都应该受到赞赏

Aks*_*aje 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 ) }
));
Run Code Online (Sandbox Code Playgroud)

如果您想对所有经典块执行此操作,只需迭代整个块并查找块名称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 ) }
    ));    
  }
})
Run Code Online (Sandbox Code Playgroud)