Основной проблемой являются отсутствующие скрипты. Сценарии, поставленные в очередь _WP_Editors::enqueue_scripts()
, никогда не печатаются. То же самое верно для _WP_Editors::editor_js()
.
Так что вы должны сделать это в вашем обработчике обратного вызова AJAX. Я написал демо-плагин и поместил его на GitHub: T5 AJAX Editor .
Есть один класс с именем Ajax_Editor
. Его метод 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();
даст вам больше, чем вы ожидали: некоторые плагины (например, Query Monitor) регистрируют свои сценарии даже для запросов AJAX, даже если они там не нужны.