El problema principal son los scripts que faltan. Los scripts encolados en _WP_Editors::enqueue_scripts()
nunca se imprimen. Lo mismo es cierto para _WP_Editors::editor_js()
.
Así que tienes que hacer eso en tu controlador de devolución de llamada AJAX. He escrito un complemento de demostración y lo puse en GitHub: T5 AJAX Editor .
Hay una clase llamada Ajax_Editor
. Su método render()
imprime el editor en solicitudes 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();
}
El orden exacto es importante, no olvide el die()
al final. Lo que no funciona aún es la carga de medios. Recibo un error de JavaScript cuando intento incluirlo.
Tenga en cuenta que llamar a print_footer_scripts();
le dará más de lo que esperaba: algunos complementos (por ejemplo, el Monitor de consultas) registran sus scripts incluso para las solicitudes de AJAX, incluso si no los necesitan allí.