Как «вручную» вставить блок в Гутенберге? - PullRequest
0 голосов
/ 27 апреля 2018

API Гутенберга неясен, и я не могу понять, как создать и добавить блок в сообщение.

Я нашел wp.blocks.createBlock('core/paragraph', {content: "blabla"});, который возвращает симпатичный блочный объект, но не добавляет контент к сообщению.

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

Ответы [ 2 ]

0 голосов
/ 09 августа 2018
var content = "Test content";
var el = wp.element.createElement;
var name = 'core/paragraph';
// var name = 'core/html';
insertedBlock = wp.blocks.createBlock(name, {
    content: content,
});
wp.data.dispatch('core/editor').insertBlocks(insertedBlock);
0 голосов
/ 28 июня 2018

Может быть, этот исходный код может помочь https://github.com/WordPress/gutenberg/blob/master/editor/components/inserter/index.js

Посмотрите на конец файла для детали

onInsertBlock: ( item ) => {
        const { insertionPoint, selectedBlock } = ownProps;
        const { index, rootUID, layout } = insertionPoint;
        const { name, initialAttributes } = item;
        const insertedBlock = createBlock( name, { ...initialAttributes, layout } );
        if ( selectedBlock && isUnmodifiedDefaultBlock( selectedBlock ) ) {
            return dispatch( 'core/editor' ).replaceBlocks( selectedBlock.uid, insertedBlock );
        }
        return dispatch( 'core/editor' ).insertBlock( insertedBlock, index, rootUID );
    },

Чтобы быть более конкретным

return dispatch( 'core/editor' ).insertBlock( insertedBlock, index, rootUID );

Надежда помогает выяснить вашу проблему, поскольку она делает то же самое, чего вы хотите достичь

...