Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解雇Wordpress Gutenberg“;“转换为块”;以编程方式_Wordpress_Wordpress Gutenberg_Gutenberg Blocks - Fatal编程技术网

解雇Wordpress Gutenberg“;“转换为块”;以编程方式

解雇Wordpress Gutenberg“;“转换为块”;以编程方式,wordpress,wordpress-gutenberg,gutenberg-blocks,Wordpress,Wordpress Gutenberg,Gutenberg Blocks,我有几个机器人,用Node.js编写,可以自动生成HTML内容,并使用RESTAPI将它们放入几个Wordpress站点。最近WordPress5.0正式发布,Gutenberg成为默认编辑器。所有旧帖子,以及机器人生成的帖子,都将封装在一个“经典”块中 正如我们大多数人已经知道的,应该添加额外的标记以将HTML元素转换为块,并且在Gutenberg UI中有一个“转换为块”按钮将它们转换为块。是否有任何方便的方法(比如使用内置函数)以编程方式执行与“转换为块”相同的操作,或者我们应该逐个包装那

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


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

可能有点晚了,但如果有人仍在寻找解决方案,请看下面的方法

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

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

是否有一个npm包我可以用来访问
wp
大概我会从一个npm包导入它,对吗?@MaxCarroll有几个WordPress包()使用wp global,但根据您的操作方式,您可能不需要它们。该代码似乎使用了“wp blocks”、“wp editor”软件包,这些软件包被编译到标准的wordpress安装中。这听起来似乎正是我想要的,但我无法让它正常工作(即使将“core/editor”更新为“core/block editor”)。getBlocks总是为我返回一个空数组,不管当前帖子中有多少块。不知道我做错了什么。调用getBlocks太早了?我还尝试将其包装在wp.domReady(function(){};