Zainicjuj edytor / edytor wizualny TinyMCE po wstawieniu AJAX

11

Mam grupę pól w stylu „repeater” na niestandardowej stronie opcji. Aktywny edytor wizualny jest w stanie ukrytym, a kiedy użytkownik kliknie „dodaj nowy”, cały wiersz zostanie sklonowany. Następnie muszę zainicjować edytor wizualny w sklonowanym wierszu. Mój kod:

$('.repeater-add-new').click(function(event) {
    event.preventDefault();
    var target = $(this).data('repeater');
    $( '#' + target).find('.repeater-row:not(.clone) .repeater-content.in').collapse();
    var newRow = $( '#' + target + ' .repeater-row.clone' ).clone().appendTo( '#' + target + ' .repeater-row-wrapper' ).removeClass('clone');
    rebuildIndex(target);

    // Initialize editors if needed
    newRow.find('.wp-editor-wrap').each(function(index, el) {
        var ed_id = $(this).find('textarea').attr('id');

        tinymce.init(tinyMCEPreInit.mceInit[ed_id]);
        tinymce.execCommand('mceAddEditor', false, ed_id); 
        quicktags({id : ed_id});
    });
});

Zrzut ekranu interfejsu:

Zrzut ekranu

Podczas ładowania strony pojawia się błąd konsoli:

Uncaught TypeError: Nie można odczytać właściwości „onpageload” niezdefiniowanej

I oczywiście edytor nie działa. Po zapisaniu strony działa to oczywiście dobrze, ale potrzebuję, aby działała również po dodaniu wiersza.

Jack Arturo
źródło
czy udało Ci się rozwiązać problem „onpageload”
Kvvaradha
Wygląda na to, że może być konieczne zarejestrowanie niektórych rzeczy za pomocą szybkich tagów. Nie jestem w 100% pewien, ponieważ nie mogę tego przetestować lokalnie, ale możesz zacząć od stackoverflow.com/questions/21519322/..., aby zobaczyć, czy to w ogóle pomaga.
phatskat
Hej, natknąłem się na to ponownie. OP, czy możesz dodać fragment opisujący sposób dodania jednego z tych pól do edytora postów? Mogę spróbować zareagować lokalnie i zagłębić się w to, jeśli sam potrafisz to zrobić.
phatskat
Cześć @phatskat, dzięki. Skończyło się na zupełnie innym kierunku ... klient chciał spakować ten system do sprzedaży komercyjnej, więc wszystko napisaliśmy od nowa, używając niestandardowego interfejsu bez ACF. Doceń ofertę, aby pomóc!
Jack Arturo

Odpowiedzi:

1

Czy udało Ci się uruchomić edytor bez dołączonego javascript? Jeśli tak, spróbuj utworzyć szablon zawierający działający edytor tinymce, a następnie przepisz kod JavaScript, aby skopiować ten szablon, używając WithDataAndEventsargumentu clone()funkcji jQuery ustawionej na true.

Na przykład:

$('.cloner').click(function(){
  $('.container').append($('.template').clone(true).removeClass('hidden'));
});
Fleuv
źródło