Saya memiliki tema yang dikembangkan khusus dan sangat kompleks. Salah satu hal yang saya miliki adalah beberapa area konten tempat pengguna dapat menentukan konten untuk tab tertentu. Saya memuat banyak contoh editor WordPress melalui wp_editor()
fungsi. Ini bekerja dengan sempurna. (Ini semua di sisi admin, dalam jenis posting "Halaman")
Namun, saya mulai membuat beberapa perbaikan, termasuk kemampuan untuk menambah / menghapus tab secara dinamis (sebelumnya, saya memuat 6 editor pada halaman). Pengguna mungkin memiliki 1-7 tab.
Ketika pengguna menambahkan tab, itu perlu menambahkan contoh editor ke halaman. Namun, apa pun yang saya coba, saya tidak dapat memuat dan menampilkannya dengan benar.
Berikut adalah 2 hal yang saya coba sejauh ini:
- Buat file php dengan admin bootstrap yang disertakan, dan kemudian memuat editor dengan
wp_editor()
. Saya kemudian melakukan jQuery$.load
untuk memanggil halaman dan memasukkan HTML yang dihasilkan di area yang perlu ditampilkan. Ini tidak benar-benar berfungsi, namun, ketika tombol format editor menghilang (perlu dicatat, yang menarik halaman secara langsung, editor menampilkan dan berfungsi dengan sempurna) - Memuat editor pada halaman, di dalam div tersembunyi, dan kemudian setelah tab ditambahkan, gunakan jquery untuk memindahkannya ke tempatnya. Ini memuat editor dalam kebijaksanaan, tetapi Anda tidak dapat menggunakan tombol editor mana pun (ditampilkan, tetapi tidak melakukan apa-apa), dan Anda tidak dapat meletakkan kursor di area teks (penasaran, bagaimanapun, yang beralih ke mode HTML memungkinkan pengetikan dan beberapa interaksi dengan tombol mode HTML)
Jadi pertanyaannya adalah, adakah yang beruntung menambahkan editor melalui panggilan AJAX? Ada saran?
admin-ajax.php
? Jika tidak ada fungsi dengan kode Anda kemudian panggil melaluiadmin-ajax.php
$('#sph-tabs-section-tab'+newTab).load('/wp-admin/admin-ajax.php?action=sph_add_editor');
dan kemudian menambahkan fungsi yang mengembalikanwp_editor()
. Itu dipanggil tanpa masalah, tetapi masih hanya mengembalikan editor tanpa tombol. (hasil yang sama persis seperti item 1 di OP)Jawaban:
Untuk mendapatkan quicktags muncul, Anda perlu instantiate mereka dalam handler ajax oncomplete Anda.
Handler sukses ajax saya terlihat seperti ini;
Saya berhasil membuat editor memuat dengan terlebih dahulu memanggil fungsi statis yang membuat editor dan menyimpannya sebagai variabel. Saya menjalankan metode pembuatan editor di init. Hal ini tampaknya membuat wordpress mengaktifkan semua skrip yang diperlukan.
Penting bahwa ketika Anda membuat instance editor Anda, bahwa Anda mengaturnya untuk menggunakan tinymce, dengan cara itu file tinymce js juga di-enqued.
sumber
Setelah bergumul dengannya, temukan solusi yang berfungsi, dalam panggilan balik setelah Anda menambahkan elemen baru:
Aneh bahwa tidak ada dokumentasi di dalam codex.
sumber
wp_editor()
dengantinymce
arg disetel ketrue
:-)Akhirnya, solusi kerja:
tambahkan aksi di wordpress, katakanlah
My_Action_Name
(perhatikan juga, ID teksMy_TextAreaID_22
):sekarang, di Dasbor, jalankan fungsi ini (catatan, penggunaan dari
My_TextAreaID_22
danMy_Action_Name
):sumber
Anda perlu memanggil editor init lagi setelah Anda menambahkan ajax textarea Anda, saya melakukannya seperti ini:
Kemudian panggil fungsi Anda setelah ajax Anda, seperti ini:
sumber
response
), panggil fungsi tinymce_textareas yang menginisialisasi tinyMCE pada textareas baru.Solusi yang dapat digunakan dari @toscho on github . Dia membangun hasil yang bagus ini juga untuk pertanyaan di sini, lihat jawabannya untuk lebih jelasnya.
sumber
Gunakan kode ini, semoga akan membantu:
Lebih detail dapat ditemukan di sini .
sumber
Saya berhasil dengan cara ini:
Id harus rundom dan unik. Pengaturan harus sama dengan pengaturan di editor ajax Anda.
wp_editor( '', '[set id as you need]', array(the same settings as in the main page) ); _WP_Editors::editor_js(); //this print editor init code
sumber
Ini akan berfungsi pada halaman admin.
Untuk menambahkan editor wp baru ke wadah oleh JS AJAX:
1) Buat fungsi wp_ajax di functions.php untuk mengembalikan wp_editor
2) Buat skrip jQuery untuk meminta editor teks baru dan menambahkannya ke wadah, untuk kasus ini, ketika menekan tombol
File PHP
Script JS (jsfile.js)
Panggilan skrip enqueue:
sumber