如何使用JavaScript访问管理区域中的WordPress经典编辑器的内容?

时间:2021-10-16 作者:conpertura

我正在开发一个小的Wordpress插件,它使用JavaScript将带有css类的html标记添加到Wordpress编辑器的可视文本视图中。我使用经典编辑器。

根据Chrome开发工具,可视文本编辑器由几个div元素组成,然后是一个id为;内容\\u ifr“;它加载第二个body元素,该元素包含与帖子相关的所有html标记:

<body id="tinymce" class="mce-content-body content post-type-post post-status-publish post-format-standard page-template-default locale-de-de mceContentBody wp-editor wp-autoresize html5-captions" data-id="content" dir="ltr" style="overflow-y: hidden;" contenteditable="true"><p>Post content</p></body>
我已经发现我可以使用

document.getElementById("content_ifr").contentDocument.body
但这只适用于控制台中的手动输入,在加载所有内容之后。它在插件的JavaScript文件中不起作用,该插件的php文件通过wp\\u enqueue\\u脚本加载该插件。相应的变量始终返回null。

如何使经典编辑器的内容可供插件的JavaScript文件访问?

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

要在经典编辑器中以字符串形式获取编辑器内容,请使用以下命令:

content = tinymce.activeEditor.getContent();
摘自https://stackoverflow.com/a/5843951/57482

请注意,如果要修改内容,应该使用提供的API,而不是直接修改DOM。如果不这样做,就不会在javascript中更新插件的本地状态,从而导致问题。修改DOM应该是最后的选择。

还要注意,这对块编辑器不起作用。块编辑器需要一种完全不同的方法,如果不破坏块或将所有内容转换为自定义HTML块而导致其他问题,则无法编辑内容并将其放回。

相关推荐

如何从JavaScript生成COOKIEHASH

首要问题是如何获取PHP变量的内容:COOKIEHASH 在柏树测试中。我正在为WordPress编写一些Cypress测试,为了设置cookiesto log in a user in WordPress using Cypress, 那么我需要COOKIEHASH-变量对于那些不熟悉COOKIEHASH, 转到WordPress安装并将此代码放入任何位置:echo \'<pre>\'; print_r(COOKIEHASH); echo \'</pre>\';&