Come caricare wp_editor tramite AJAX


17

Qualcuno sa come caricare wp_editor tramite AJAX in WordPress?

Il mio markup e l'editor vengono caricati correttamente ma i controlli dell'editor non vengono caricati correttamente, potrebbe essere perché Javascript non è in esecuzione nella chiamata AJAX.

Qualsiasi aiuto sarebbe apprezzato.


È un granché lavorare. Dai un'occhiata ad alcuni dei codici di Carrington Build o Advanced Custom Fields (penso ...). Preparati ad essere frustrato.
MikeNGarrett,

Risposte:


7

Il problema principale sono gli script mancanti. Gli script accodati _WP_Editors::enqueue_scripts()non vengono mai stampati. Lo stesso vale per _WP_Editors::editor_js().

Quindi devi farlo nel tuo gestore di callback AJAX. Ho scritto un plugin demo e l'ho messo su GitHub: T5 AJAX Editor .

C'è una classe chiamata Ajax_Editor. Il suo metodo render()stampa l'editor su richieste 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();
}

L'ordine esatto è importante, non dimenticare quello die()alla fine. Ciò che non funziona ancora è il caricamento multimediale. Ottengo un errore JavaScript quando provo a includerlo.

Nota che chiamare print_footer_scripts();ti darà più del previsto: alcuni plugin (ad esempio Query Monitor) registrano i loro script anche per richieste AJAX, anche se non ne hanno bisogno.


Grazie mille! mi hai salvato da 2 giorni cercando di trovare lavoro! l'unica cosa con questo, se vuoi includerlo in un tipo di post personalizzato, è in conflitto con altri editor :(
numediaweb,

per chiunque cerchi, dopo il WP 4.8 puoi farlo più facilmente (e in modo pulito) tramite l'API JS wp.editor.initialize: wordpress.stackexchange.com/a/274608/76440
majick,

0

Dopo aver lottato con esso, ho trovato la soluzione a una linea che funziona, in callback aggiungi:

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

Non ho idea del perché non sono riuscito a trovare la documentazione all'interno di Tinymce.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.