主要问题是缺少脚本。脚本已排入队列_WP_Editors::enqueue_scripts()
从不打印。这同样适用于_WP_Editors::editor_js()
.
因此,必须在AJAX回调处理程序中执行此操作。我已经编写了一个演示插件,并将其放在GitHub上:T5 AJAX Editor.
有一个名为Ajax_Editor
. Its方法render()
根据AJAX请求打印编辑器。
public function render()
{
if ( ! $this->validator->is_valid( TRUE ) )
die( \'nope\' );
wp_editor( $this->data->get(), $this->editor_id, $this->settings );
\\_WP_Editors::enqueue_scripts();
print_footer_scripts();
\\_WP_Editors::editor_js();
die();
}
准确的顺序很重要,不要忘记
die()
在最后。目前还不起作用的是媒体上传。当我尝试包含该内容时,会出现JavaScript错误。
请注意,调用print_footer_scripts();
将给您带来比您预期的更多:一些插件(例如查询监视器)甚至为AJAX请求注册其脚本,即使它们在那里不需要它们。