it-swarm.com.de

Wie lade ich wp_editor über AJAX

Weiß jemand, wie man wp_editor über AJAX in WordPress lädt?

Mein Markup und mein Editor werden ordnungsgemäß geladen, aber die Editorsteuerelemente werden nicht ordnungsgemäß geladen. Dies kann daran liegen, dass Javascript beim Aufruf von AJAX nicht ausgeführt wird.

Jede Hilfe wäre dankbar.

17
user17108

Das Hauptproblem sind die fehlenden Skripte. Die in _WP_Editors::enqueue_scripts() eingereihten Skripte werden niemals gedruckt. Gleiches gilt für _WP_Editors::editor_js().

Das müssen Sie also in Ihrem Callback-Handler AJAX tun. Ich habe ein Demo-Plugin geschrieben und es auf GitHub gestellt: T5 AJAX Editor .

Es gibt eine Klasse mit dem Namen Ajax_Editor. Die Methode render() druckt den Editor auf Anfrage von 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();
}

Die genaue Reihenfolge ist wichtig, und vergessen Sie nicht die die() am Ende. Was noch nicht funktioniert, ist der Medien-Upload. Ich erhalte einen JavaScript-Fehler, wenn ich versuche, das einzuschließen.

Beachten Sie, dass der Aufruf von print_footer_scripts(); mehr bringt, als Sie erwartet haben: Einige Plug-ins (z. B. Query Monitor) registrieren ihre Skripte auch für AJAX Anforderungen, selbst wenn sie dort nicht benötigt werden.

6
fuxia

Nachdem ich damit zu kämpfen hatte, fand ich die Ein-Zeilen-Lösung, die funktioniert. Fügen Sie im Rückruf Folgendes hinzu:

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

Keine Ahnung, warum ich keine Dokumentation in Tinymce finden konnte.

0