O principal problema são os scripts ausentes. Os scripts enfileirados _WP_Editors::enqueue_scripts()
nunca são impressos. O mesmo vale para _WP_Editors::editor_js()
.
Então você precisa fazer isso no seu manipulador de retorno de chamada AJAX. Eu escrevi um plugin de demonstração e o coloquei no GitHub: T5 AJAX Editor .
Há uma classe chamada Ajax_Editor
. Seu método render()
imprime o editor em solicitações 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();
}
A ordem exata é importante, e não se esqueça die()
do final. O que ainda não funciona é o upload da mídia. Eu recebo um erro de JavaScript quando tento incluir isso.
Observe que a chamada print_footer_scripts();
fornecerá mais do que o esperado: alguns plug-ins (Query Monitor, por exemplo) registram seus scripts mesmo para solicitações AJAX, mesmo que não precisem delas.