J'ai un plugin qui permet à l'utilisateur d'ajouter dynamiquement des sections qui ont besoin de l'éditeur tinyMCE. JQuery clone une div
et la place dans un conteneur. Une des zones de saisie est une zone de texte configurée comme suit:
<textarea name="sectionContent_1" id="sectionContent_1"></textarea>
Je dois remplacer la zone de texte par l'éditeur tinyMCE.
J'ai regardé:
Comment charger wp_editor () via AJAX/jQuery et utilisez wordpress wp_editor dans dynamic/ajax html
Ni l'un ni l'autre ne semble fonctionner pour nous
J'ai essayé ceci à l'intérieur du déclencheur qui appelle à ajouter la section textarea:
$(this).parent().find('.sectionOptions').html(ctHolder);
var textAreaID = 'sectionContent_'+sectionID;
tinyMCE.execCommand('mceRemoveEditor', true, textAreaID);
tinyMCE.execCommand('mceAddControl', false, textAreaID);
En cela, j'ajoute les données clonées (ctHolder) au .sectionOptions
en définissant l'ID de la zone de texte, en réinitialisant l'éditeur sur l'ID, puis en ajoutant le contrôle à l'ID ... cela ne fonctionne pas, mais semble être la suggestion la plus courante.
tinymce.remove();
tinymce.init();
Ça marche bien!
Cela a fait le tour:
var textAreaID = 'sectionContent_' + sectionID;
$(this).parent()
.find('.sectionOptions')
.html(ctHolder).ready(
function() {
tinyMCE.execCommand('mceAddEditor', false, textAreaID);
}
);
Wordpress 3.9 utilise tinyMCE 4.x et "mceAddControl" a été remplacé par "mceAddEditor". En outre, j’ai placé l’appel dans une fonction prête pour que jquery n’exécute pas tinyMCE tant qu’elle n’a pas chargé la zone de texte sur le dom.