有没有办法在古腾堡/经典文字出版社的编辑中抓住编辑的当前价值?(不是帖子的储值!)

时间:2021-07-26 作者:bestprogrammerintheworld

我正在尝试制作我的插件;古腾堡-兼容;。我在替换编辑器内容时遇到了一些问题。在我可以通过使用#content更改值之前,Gutenburg显然有一种使用REST API的新方法。

有没有办法获取编辑器的当前值?(Not the saved value of the post!

我之所以需要它,是因为我想实时替换核心/编辑器的值。它与激活的经典编辑器一起工作,但我不想要求这样。

let old_content = \'\';
old_content = wp.data.select( \'core/editor\' ).getCurrentPost().content;     
//TINYMCE => old_content = $(\'textarea#content\').html();

//Aim is to do a replace like this (and this works but only FIRST time because old_content 
//fetches from server/db instead of the actual editor (If I understand this correctly)

wp.data.dispatch( \'core/block-editor\' ).resetBlocks( wp.blocks.parse( new_content ) );
//TINYMCE: $(\'textarea#content\').html( new_content );

1 个回复
SO网友:bestprogrammerintheworld

如果有人遇到同样的问题,我会找到一种方法来实现我想要的(我希望有人能从中得到帮助)。

This is my solution: getEditedPostContent() 包含临时发布(修改)内容:

let old_content = \'\';
if ($(\'textarea#content\').length >0) {
  old_content = $(\'textarea#content\').html();
}
else {
  //"Gutenburg" style (>=WP 5.8)
  old_content = wp.data.select( \'core/editor\' ).getCurrentPost().content; 
  if ( wp.data.select( \'core/editor\' ).getEditedPostContent() ) {
    old_content =  wp.data.select( \'core/editor\' ).getEditedPostContent();
  } 
}
以及实际更换:

if ($(\'textarea#content\').length >0) {
   $(\'textarea#content\').html( new_content );
}
else {
  //"Gutenburg" style (>=WP 5.8)
  wp.data.dispatch( \'core/block-editor\' ).resetBlocks( wp.blocks.parse( new_content ) );
}

相关推荐

为什么现在使用onChange={(Content)=>setAttributes({Content})}?

通过查看2018/2019年构建的块与当前构建的块的较旧教程或代码,我看到了两种不同的属性值设置方式。例如;“旧”;名为“的属性的方式”;“内容”;可能是:onChange={ (newContent) => setAttributes({ content: newContent })} 而在更现代的街区:onChange={ ( content ) => setAttributes( { content } )} 我知道这只是一个小小的变化,但我很好奇这里是否有人知道原因。谢谢