Como carregar o wp_editor via AJAX

16

Alguém sabe como carregar wp_editor via AJAX no WordPress?

Minha marcação e meu editor estão sendo carregados corretamente, mas os controles do editor não estão sendo carregados corretamente, pode ser porque o Javascript não está sendo executado na chamada AJAX.

Qualquer ajuda seria apreciada.

    
por user17108 16.07.2013 / 07:17

2 respostas

6

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á.

    
por fuxia 20.01.2014 / 06:14
0

Depois de lutar com ele, encontrei a solução de uma linha que funciona, em callback add:

tinymce.execCommand( 'mceAddEditor', true, element.id );

Não sei por que não encontrei documentação dentro do tinymce.

    
por Goran Jakovljevic 05.04.2016 / 09:04