Пользовательский блок Gutenberg отображает неправильную позицию на странице - PullRequest
0 голосов
/ 15 января 2020

Я создал свой первый пользовательский блок Гутенберга. Я хочу, чтобы он ничего не делал, кроме отображения некоторого php кода. Я заставил его работать на веб-интерфейсе, но код не отображается в той позиции, в которой я хочу. Рендерится под заголовком страницы, над всеми остальными блоками. В бэкэнде он отображается в правильном столбце. Также при сохранении страницы выдается эта ошибка: Неправильный ответ JSON. Все изменения сохраняются.

Что-то мне здесь не хватает? Это мой код:

    if ( ! function_exists( 'register_block_type' ) ) {
        // Gutenberg is not active.
        return;
    }
    wp_register_script(
        'ww-agenda-script',
        plugins_url( 'block.js', __FILE__ ),
        array( 'wp-blocks', 'wp-i18n', 'wp-element' )
    );
    register_block_type( 'woonenwerk/ww-agenda', array(
        'editor_script' => 'ww-agenda-script',
        'render_callback' => 'woonenwerk_agenda_render_callback',
    ) );

}
add_filter( 'init', 'ww_agenda_register_block' );

И в блоке. js:

( function( blocks, i18n, element ) {
    var el = element.createElement;
    var __ = i18n.__;


    blocks.registerBlockType( 'woonenwerk/ww-agenda', {
        title: __( 'Woon en Werk: Agenda' ),
    description: __( 'Dit block laat de eerstvolgende 5 agenda items zien.' ),
        icon: 'list-view',
        category: 'woon-en-werk',
        example: {},
        edit: function() {
            return el('p',{  },'Woon en Werk Agenda. Dit block laat de eerstvolgende 5 agenda-items zien.');
                },
    } );
}(
    window.wp.blocks,
    window.wp.i18n,
    window.wp.element
) );

Я попытался добавить функцию сохранения, которая возвращает null (мне не нужно сохранить что-нибудь, так как я использую render_callback для вывода). Это не сработало.

Также я попробовал другие хуки вместо init, но это тоже не сработало.

Я погуглил эту проблему, но не нашел ничего полезного.

Если вам нужна дополнительная информация, чтобы ответить на мой вопрос, пожалуйста, сообщите мне ..

Обновление: Я использовал BlockLab для создания другого пользовательского блока с обратным вызовом рендеринга из моего php файла. Это сработало, содержимое этого нового блока теперь отображается в правильном положении. Также в бэкэнде я вижу визуализированный контент. Я думаю, что это как-то связано с функцией сохранения. Я продолжу анализировать код BlockLab, чтобы увидеть, как я должен поместить это в свой плагин. Было бы хорошо, если бы мне не понадобился плагин BlockLab, чтобы это работало.

...