Masalah utama adalah skrip yang hilang. Script enqueued _WP_Editors::enqueue_scripts()
tidak pernah dicetak. Hal yang sama berlaku untuk _WP_Editors::editor_js()
.
Jadi, Anda harus melakukannya di penangan panggilan balik AJAX Anda. Saya telah menulis plugin demo dan meletakkannya di GitHub: T5 AJAX Editor .
Ada satu kelas bernama Ajax_Editor
. Metodenya render()
mencetak editor pada permintaan 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();
}
Urutan yang tepat itu penting, dan jangan lupa die()
pada akhirnya. Yang belum berfungsi adalah unggahan media. Saya mendapatkan kesalahan JavaScript saat mencoba memasukkannya.
Perhatikan bahwa menelepon print_footer_scripts();
akan memberi Anda lebih dari yang Anda harapkan: beberapa plugin (contohnya Query Monitor) mendaftarkan skrip mereka bahkan untuk permintaan AJAX, bahkan jika mereka tidak membutuhkannya di sana.