Vấn đề chính là các kịch bản bị thiếu. Các kịch bản _WP_Editors::enqueue_scripts()
được bao bọc trong không bao giờ được in. Điều này cũng đúng với _WP_Editors::editor_js()
.
Vì vậy, bạn phải làm điều đó trong trình xử lý gọi lại AJAX của bạn. Tôi đã viết một plugin demo và đưa nó lên GitHub: T5 AJAX Editor .
Có một lớp tên Ajax_Editor
. Phương thức của nó render()
in trình soạn thảo theo yêu cầu 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();
}
Thứ tự chính xác là rất quan trọng, die()
cuối cùng đừng quên . Những gì không hoạt động được là tải lên phương tiện truyền thông. Tôi gặp lỗi JavaScript khi cố gắng đưa vào đó.
Lưu ý rằng việc gọi điện print_footer_scripts();
sẽ mang lại cho bạn nhiều hơn bạn mong đợi: một số plugin (ví dụ Trình theo dõi truy vấn) đăng ký tập lệnh của chúng ngay cả đối với các yêu cầu AJAX, ngay cả khi chúng không cần chúng ở đó.