使用 wp_insert_post() 时如何在 post_content 中插入古腾堡块?

How to insert Gutenberg block inside post_content when using wp_insert_post()?

我想在 PHP 中生成一个古腾堡块。

我目前正在开发一个 WordPress 插件,可以从 YouTube 导入视频并为每个视频创建一个 post。 我可以在 post_content 中插入 YouTube 视频,但是当我使用 Gutenberg 编辑器编辑 post 时,它不会显示为一个块。

我在这里阅读了大部分“块编辑器手册”https://developer.wordpress.org/block-editor/ 但除了如何创建自定义块之外,我找不到任何东西。 我也在 google 上进行了搜索,但我发现的所有内容也是关于创建自定义块的。 然而我发现 Gutenberg 块作为 html 评论存储在 post_content 中,但评论似乎是通过 Gutenberg WYSIWYG 编辑器使用 js 生成的。

我知道我可以用块创建一个 post 并从我的数据库中复制 post_content 然后将其用作“模板”,但我认为这不是正确的方法。

是否有关于使用 WordPress 附带的块(即:嵌入、段落)并生成保存在 post_content 和 PHP 中的 html 评论的文档? 有可能吗?

当您手动添加 YouTube 块时,请单击“工具与选项”菜单(右侧)中的 "Code Editor" 视图。在代码编辑器视图中,您将看到编辑器正确解析块所需的 HTML。

例如:

<!-- wp:core-embed/youtube {"url":"https://www.youtube.com/watch?v=VIDEOID","type":"video","providerNameSlug":"youtube","className":"wp-embed-aspect-16-9 wp-has-aspect-ratio"} -->
<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
https://www.youtube.com/watch?v=VIDEOID
</div></figure>
<!-- /wp:core-embed/youtube -->

今天我不得不以编程方式更新古腾堡块的内容。

我用了两种方法:

  • parse_blocks() 读取现有数组,我可以将其修改为 PHP.
  • 中的任何数组
  • render_blocks() 然后将内容添加到 post post_content; 然后可以通过 wp_update_post().
  • 保存 post 数组

阅读这篇文章很有帮助https://www.billerickson.net/access-gutenberg-block-data/

我自己的项目涉及编辑 acf 自定义字段与块内其他自定义 post 类型的关系,但过程应该非常相似。关于 OP 的项目:我建议先手动完成 post 以生成数组模板 (parse_block)。那么自定义这个数组应该就比较简单了。