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

时间:2018-12-08 04:21:59

标签: wordpress wordpress-gutenberg gutenberg-blocks

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

我们大多数人已经知道,应该添加其他标记以将HTML元素转换为块,并且在Gutenberg UI中有一个“转换为块”按钮以将其转换为块。是否有任何方便的方法(例如利用内置函数)以编程方式执行与“转换为块”相同的操作,还是我们应该将那些与古腾堡相关的标记逐一包装?任何帮助都应感谢

1 个答案:

答案 0 :(得分:1)

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

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

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