Comment charger wp_editor via AJAX

16

Quelqu'un sait-il comment charger wp_editor via AJAX dans WordPress?

Mon balisage et mon éditeur sont chargés correctement, mais les commandes de l'éditeur ne sont pas chargés correctement, peut-être parce que Javascript n'est pas en cours d'exécution dans un appel AJAX.

Toute aide serait la bienvenue.

    
posée user17108 16.07.2013 - 07:17

2 réponses

6

Le problème principal concerne 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: Editeur T5 AJAX .

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, n’oubliez pas le 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 de l'inclure.

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

    
réponse donnée fuxia 20.01.2014 - 06:14
0

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

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

Je ne sais pas pourquoi je n'ai pas trouvé de documentation à l'intérieur de tinymce.

    
réponse donnée Goran Jakovljevic 05.04.2016 - 09:04

Lire d'autres questions sur les étiquettes