2

我很难准备我的帖子数据以将其导入网站。我想将我所有的原始 html 转换为古腾堡就绪块(如<!--wp:paragraph--> <p>hello world</p> <!--/wp:paragraph-->),以避免对每个帖子进行手动转换。现在发生了什么:

注册处理程序脚本和依赖项 -wp_enqueue_script( 'filter', get_template_directory_uri() . '/js/article-filter.js', array('jquery', 'wp-blocks', 'wp-element'));

调用 rawHandler/pasteHandler - var gutblock = wp.blocks.rawHandler({ HTML: '<p class="content">Hello world </p>' });

出错 -Cannot read property 'attributes' of undefined 也许我在主要概念上被误解或做错了什么。

将非常感谢您的帮助。

4

2 回答 2

2

有一个小的帮助函数,它首先将原始 HTML 转换为古腾堡块,然后将其序列化为古腾堡就绪的帖子内容。

查询脚本

function load_admin_resources_footer() {
    wp_enqueue_script( 'filter', get_template_directory_uri() . '/js/article-filter.js', array('jquery', 'wp-blocks', 'wp-edit-post'));
}
add_action('admin_footer', 'load_admin_resources_footer');

转换为块

var editholdy_is_activate = false;
function convert_to_gutenberg(content, remove_spaces = false) { // "'wp-blocks', 'wp-edit-post'" - should be setted as current script dependecies

    // initiate all built-in gutenberg blocks
    if (!editholdy_is_activate) {
        $('<div />').attr('id', 'editholdy').attr('style', 'display: none').appendTo('body');
            wp.editPost.initializeEditor('editholdy');
            editholdy_is_activate = true;
    }

    var gutblock = wp.blocks.rawHandler({ 
        HTML:  content,
    });

    var serelized = wp.blocks.serialize(gutblock);
    serelized = (remove_spaces) ? serelized.replace(/(\n|\r)/g, '') : serelized;

    return serelized;

}
于 2019-04-12T16:06:09.863 回答
0

从浏览器复制您的 html(实际上不是 html 表示您的 html 的输出),然后将其粘贴到 Gutenberg 编辑器。Gutenberg 将负责解析自己。

Gutenberg 还提供了支持从 MS Word Docs 复制粘贴的附加功能。

于 2019-04-03T05:59:29.970 回答