求将Block Editor内容转为register_block_type可用模板数组的方法
将Gutenberg块HTML转换为自定义文章类型/Block模板数组
需求
我需要把在Gutenberg编辑器中设计的块,或是保存为.html模板文件的块,转换成注册自定义文章类型或block.json时可用的模板数组。如果有大量嵌套块,手动编写包含所有支持项和属性的模板会非常繁琐。
示例:Gutenberg中的块HTML
<!-- wp:heading {"level":1,"className":"display-4"} --> <h1 class="wp-block-heading display-4">Hello World</h1> <!-- /wp:heading -->
目标模板格式(需手动编写的结构)
function myplugin_register_book_post_type() { $args = array( // 其他参数 'template' => array( array( 'core/heading', array( 'level' => 1, 'className' => 'display-4' ) ) ), 'template_lock' => 'insert' ); register_post_type( 'book', $args ); } add_action( 'init', 'myplugin_register_book_post_type' );
尝试过的方案及问题
我试过用parse_blocks()函数直接转换,但输出格式不符合模板的要求:
function myplugin_register_book_post_type() { $args = array( 'template' => parse_blocks('<!-- wp:heading {"level":1,"className":"display-4"} --> <h1 class="wp-block-heading display-4">Hello World</h1> <!-- /wp:heading -->'), 'template_lock' => 'insert' ); register_post_type( 'book', $args ); } add_action( 'init', 'myplugin_register_book_post_type' );
求助
希望找到一个PHP或JS函数,能将Block HTML直接转换成符合要求的模板数组。既然FSE主题编辑器可以为特定文章创建模板,我推测WordPress核心里应该存在这类转换逻辑,但我查看核心代码、查阅文档及搜索时,因为WordPress中"Template"通常指主题模板文件而非块注册模板,很难找到有效结果。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

