Cum să afișezi un editor tinyMCE în WordPress atunci când adaugi un textarea dinamic cu JavaScript?
Am un plugin care permite utilizatorului să adauge dinamic secțiuni care trebuie să conțină editorul tinyMCE. jQuery clonează un div
și îl plasează într-un container. Una din căsuțele de input este un textarea configurat astfel:
<textarea name="sectionContent_1" id="sectionContent_1"></textarea>
Trebuie să înlocuiesc textarea cu editorul tinyMCE.
Am analizat:
Cum să încarci wp_editor() prin AJAX/jQuery și folosește wp_editor din WordPress în html dinamic/ajax
Niciuna dintre aceste soluții nu pare să funcționeze pentru noi
Am încercat acest cod în interiorul trigger-ului care adaugă secțiunea cu textarea:
$(this).parent().find('.sectionOptions').html(ctHolder);
var textAreaID = 'sectionContent_'+sectionID;
tinyMCE.execCommand('mceRemoveEditor', true, textAreaID);
tinyMCE.execCommand('mceAddControl', false, textAreaID);
Aici, adaug datele clonate (ctHolder) în .sectionOptions
, setez ID-ul textarea-ului, resetez editorul pentru acel ID, apoi adaug controlul pentru ID... dar nu funcționează, deși pare a fi sugestia cea mai comună.
Aceasta a funcționat:
var textAreaID = 'sectionContent_' + sectionID;
$(this).parent()
.find('.sectionOptions')
.html(ctHolder).ready(
function() {
tinyMCE.execCommand('mceAddEditor', false, textAreaID);
}
);
WordPress 3.9 folosește tinyMCE 4.x, așa că "mceAddControl" a fost înlocuit cu "mceAddEditor". De asemenea, am plasat apelul în interiorul unei funcții ready, astfel încât jQuery să nu execute tinyMCE până când nu încarcă textarea în DOM.
