Gutenberg编辑JavaScript内容(WordPress)

时间:2018-01-11 12:23:18

标签: wordpress wordpress-gutenberg

回到TMCE时代,我们可以轻松获得editor.getContent()的编辑内容。然而,在新的Gutenberg编辑器中,我找不到一种方法来做到这一点。

我需要所有编辑器内容为HTML(将其保存在数据库中的方式)。

我找到了wp.block.serialize()方法听起来很有希望。但似乎需要块(作为参数)。所以我有点卡住了。

4 个答案:

答案 0 :(得分:8)

从3.1版开始。古腾堡的餐厅,试试这个:

获取普通块内容:

var originalContent = wp.data.select( "core/editor" ).getCurrentPost().content;
var editedContent = wp.data.select( "core/editor" ).getEditedPostContent();

渲染帖子(转换为块):

wp.blocks.parse( editedContent );

答案 1 :(得分:4)

您可能想要探索同时包含window._wpGutenbergPost.contentraw内容的rendered。这是目前的情况。事情可能会改变:)

答案 2 :(得分:3)

您可以使用选择器,它使我们可以检索数据,并且类似地,例如,要更新正在古腾堡(Gutenberg)中编辑的帖子的标题,您可以执行以下操作:

wp.data.dispatch( 'core/editor' ).editPost( { title: 'New Title' } );

您可以在https://github.com/WordPress/gutenberg/blob/v2.9.2/editor/store/actions.js处查看操作文件,以查看由核心/编辑器命名空间定义的操作的完整列表。

查看更多:https://riad.blog/2018/06/07/efficient-client-data-management-for-wordpress-plugins/

答案 3 :(得分:0)

我有类似的问题,但无法发表评论。提供的答案流确实设置了帖子标题,但从4.5.1版开始不处理内容。

为了更新帖子内容,我能够插入一个段落块。这是我的代码:

wp.data.dispatch( 'core/editor' ).editPost( { title: 'New Title' } );
var editedContent = wp.data.select( "core/editor" ).getEditedPostContent();
var newBlock = wp.blocks.createBlock( "core/paragraph", {
    content: editedContent,
});
wp.data.dispatch( "core/editor" ).insertBlocks( newBlock );