Основна проблема - відсутні сценарії. Сценарії, за якими увімкнено _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();
дадуть вам більше, ніж ви очікували: деякі плагіни (наприклад, Монітор запитів) реєструють свої сценарії навіть для запитів AJAX, навіть якщо вони їм там не потрібні.