Как исправить ошибку «Этот блок содержит неожиданное или недопустимое содержимое» - PullRequest
1 голос
/ 18 апреля 2019

Любая помощь будет высоко ценится!

Я пытаюсь построить собственный блок Гутенберга. Сначала он работает нормально, но после обновления страницы я получаю сообщение об ошибке «Этот блок содержит неожиданное или недопустимое содержимое».

Я проверил некоторые другие темы, но безрезультатно ...

Код plugin.php:

<?php

function loadMyBlock() {
  wp_enqueue_script(
    'columns-block',
    plugin_dir_url(__FILE__) . 'wm-script-final.js',
    array('wp-blocks','wp-editor'),
    true
  );
}

add_action('enqueue_block_editor_assets', 'loadMyBlock');

JS:


var el = wp.element.createElement,
registerBlockType = wp.blocks.registerBlockType,
RichText = wp.editor.RichText;

registerBlockType( 'md-custom-block/columns-block', {
title: 'Transcript Block',
icon: 'universal-access-alt',
category: 'layout',
attributes: {
content1: {
type: 'array',
source: 'children',
selector: 'div'
},

},
edit: function( props ) {
var attributes = props.attributes;

    function onChangeContentFirst( newContent ) {
        props.setAttributes( { content1: newContent } );
    }



    return (
        el( 'div', { className: 'transcript-block'},
            el(
                RichText,
                {
                    tagName: 'p',
                    className: "none",
                    onChange: onChangeContentFirst,
                    value: attributes.content1
                }
            )

        )
    )
},
save: function( props ) {
    var attributes = props.attributes;
    return(
        el( 'div', { className: 'transcript-block'},
            el( RichText.Content,
                {
                    tagName: 'p',
                    className: props.className,
                    value: attributes.content1
                }
            )

        )
    )
}
} );

1 Ответ

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

Когда блок сначала загружается в редактор, он читает все свойства, а затем вычисляет выходные данные функции save (). Если входные и выходные данные не совпадают, Гутенберг знает, что что-то не так, и выдает ошибку недопустимого содержимого.

Проблема, скорее всего, такова:

content1: {
    type: 'array',
    source: 'children',
    selector: 'div'
}

Вы сделали селектор div, но содержимое фактически было выведено в p, поэтому содержимое не соответствует тому, что было сохранено.

Вам нужно либо изменить этот селектор, либо удалить p из функции сохранения.

...