web-dev-qa-db-fra.com

Comment charger wp_editor via AJAX

Est-ce que quelqu'un sait comment charger wp_editor via AJAX dans WordPress?

Mon balisage et mon éditeur se chargent correctement, mais les contrôles de l'éditeur ne se chargent pas correctement, peut-être parce que Javascript n'est pas en cours d'exécution dans l'appel AJAX.

Toute aide serait appréciée.

17
user17108

Le problème principal sont les scripts manquants. Les scripts mis en file d'attente dans _WP_Editors::enqueue_scripts() ne sont jamais imprimés. Il en va de même pour _WP_Editors::editor_js().

Vous devez donc le faire dans votre gestionnaire de rappel AJAX. J'ai écrit un plugin de démonstration et je l'ai mis sur GitHub: T5 AJAX Editor .

Il existe une classe nommée Ajax_Editor. Sa méthode render() affiche l'éditeur sur les requêtes 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'ordre exact est important, il ne faut pas oublier la die() à la fin. Ce qui ne fonctionne pas encore, c’est le téléchargement de média. Je reçois une erreur JavaScript lorsque j'essaie d'inclure cela.

Notez que l'appel de print_footer_scripts(); vous donnera plus que prévu: certains plugins (Query Monitor, par exemple) enregistrent leurs scripts même pour les requêtes AJAX, même s'ils n'en ont pas besoin.

6
fuxia

Après avoir lutté avec, trouvé la solution d'une ligne qui fonctionne, dans rappel ajouter:

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

Aucune idée pourquoi je ne pouvais pas trouver de la documentation à l'intérieur de tinymce.

0