Как конвертировать / анализировать необработанный HTML в блоки wp gutenberg с помощью wp-блоков api? - PullRequest
0 голосов
/ 31 марта 2019

У меня проблемы с подготовкой данных поста для их импорта на сайт.Я хочу преобразовать все мои необработанные HTML в готовые блоки Гутенберга (например, <!--wp:paragraph--> <p>hello world</p> <!--/wp:paragraph-->), чтобы избежать преобразования вручную для каждого сообщения.Что происходит сейчас:

Регистрация обработчика srcipt и зависимостей - 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 Может быть, ячто-то не так понято в основной концепции или что-то не так.

Буду очень признателен за помощь.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Существует небольшая вспомогательная функция, которая сначала конвертирует необработанный HTML-код в блоки gutenberg, а затем сериализует его в готовый к публикации gutenberg контент.

Сценарий запроса

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;

}
0 голосов
/ 03 апреля 2019

Скопируйте ваш html из браузера (на самом деле html не означает вывод вашего html), а затем вставьте его в редактор Gutenberg.Гутенберг сам позаботится о разборе.

Гутенберг также предоставит дополнительные функции, в которых он поддерживает вставку копий из документов MS Word.

...