O principal problema são os scripts ausentes. Os scripts enfileirados em _WP_Editors::enqueue_scripts()
nunca são impressos. O mesmo é verdade 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: Editor T5 AJAX .
Existe 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();
}
O pedido exato é importante, e não se esqueça do die()
no final. O que ainda não funciona é o upload de mídia. Eu recebo um erro de JavaScript quando tento incluir isso.
Observe que chamar print_footer_scripts();
fornecerá mais do que o esperado: alguns plug-ins (o Query Monitor, por exemplo) registram seus scripts mesmo para solicitações AJAX, mesmo que não precisem delas lá.