Как динамически добавить textarea и преобразовать её в редактор tinyMCE в WordPress с помощью JavaScript?

11 июн. 2014 г., 00:06:53
Просмотры: 16.5K
Голосов: 3

У меня есть плагин, который позволяет пользователю динамически добавлять секции, где должно быть поле tinyMCE редактора. jQuery клонирует div и помещает его в контейнер. Одно из полей ввода — это textarea, настроенная следующим образом:

<textarea name="sectionContent_1" id="sectionContent_1"></textarea>

Мне нужно заменить textarea на редактор tinyMCE.

Я изучил:

Как загрузить wp_editor() через AJAX/jQuery и использование wp_editor WordPress в динамическом/AJAX HTML

Ни один из этих вариантов не сработал в моём случае.

Я пробовал этот код внутри обработчика, который добавляет секцию с textarea:

$(this).parent().find('.sectionOptions').html(ctHolder);

var textAreaID = 'sectionContent_'+sectionID;

tinyMCE.execCommand('mceRemoveEditor', true, textAreaID);
tinyMCE.execCommand('mceAddControl', false, textAreaID);

Здесь я добавляю клонированные данные (ctHolder) в .sectionOptions, устанавливаю ID для textarea, сбрасываю редактор для этого ID, затем добавляю управление для этого ID... это не работает, но кажется наиболее распространённым советом.

1
Комментарии

Возможный дубликат Как загрузить wp_editor() через AJAX/jQuery

T.Todua T.Todua
15 авг. 2016 г. 19:08:45
Все ответы на вопрос 2
2
tinymce.remove();
tinymce.init();

Это отлично работает!

22 мар. 2015 г. 01:20:37
Комментарии

Пожалуйста, добавьте также некоторое объяснение.

Nilambar Sharma Nilambar Sharma
22 мар. 2015 г. 05:59:28

Это действительно помогает. Это работает.

harrrrrrry harrrrrrry
1 июн. 2015 г. 21:09:57
0

Это сработало:

var textAreaID = 'sectionContent_' + sectionID;
$(this).parent()
    .find('.sectionOptions')
    .html(ctHolder).ready(
        function() {
            tinyMCE.execCommand('mceAddEditor', false, textAreaID); 
        }
    );

WordPress 3.9 использует tinyMCE 4.x, поэтому "mceAddControl" был заменён на "mceAddEditor". Кроме того, я поместил вызов внутрь функции ready, чтобы jQuery не запускал tinyMCE до тех пор, пока текстовое поле не будет загружено в DOM.

11 июн. 2014 г. 00:36:50