如何“手动”(以编程方式)在古腾堡中插入一个块?

Posted

技术标签:

【中文标题】如何“手动”(以编程方式)在古腾堡中插入一个块?【英文标题】:How to "manually" (programmatically) insert a block in Gutenberg? 【发布时间】:2018-10-08 12:02:41 【问题描述】:

Gutenberg 的 API 非常晦涩难懂,我不知道如何在帖子中创建和附加块。

我找到了wp.blocks.createBlock('core/paragraph', content: "blabla");,它返回一个漂亮的块对象,但不向帖子附加任何内容。

我想通过单击按钮插入一个包含一些自定义内容的简单段落。

【问题讨论】:

【参考方案1】:
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);

【讨论】:

【参考方案2】:

也许这个源代码可以帮助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 );

希望可以帮助您解决问题,因为它正在做您想要实现的相同的事情

【讨论】:

以上是关于如何“手动”(以编程方式)在古腾堡中插入一个块?的主要内容,如果未能解决你的问题,请参考以下文章

在古腾堡编辑器中添加自定义字体(我网站的字体)

如何在古腾堡的“文档”下添加新面板

使用 wp_insert_post() 时如何在 post_content 中插入古腾堡块?

古腾堡编辑器滚动块进入视图

好奇,您如何管理管理区域中的古腾堡区块预览?

以编程方式将块插入页面,由于其ID