Saya mencoba untuk menambahkan CSS khusus (diatur melalui opsi tema) ke editor visual TinyMCE di WordPress. Di ujung depan, tema menghasilkan CSS ini dan menampilkannya di wp_head
hook. Masalah yang saya hadapi adalah bisa menambahkan output CSS ke editor.
Ini tidak dapat dilakukan dengan add_editor_style( 'editor-style.css' )
karena kita perlu menggunakan PHP untuk mengakses opsi tema.
Sebagai contoh cara kerjanya di ujung depan:
add_action( 'wp_head', 'my_custom_colors' );
function my_custom_colors() {
$color_1 = get_theme_mod( 'color_1', 'cc4a00' );
echo "<style type='text/css'>a { color: #{$color_1}; }";
}
Saya perlu metode untuk memasukkan gaya khusus ke editor visual. Bantuan apa pun akan sangat dihargai.
editor-style.css
, yang merupakan wilayah tema.Jawaban:
Solusi 1
Ini berfungsi sebagai solusi javascript:
Contoh:
cukup buka konsol js Anda dan rekatkan untuk tes cepat. Untuk menargetkan editor tertentu, seseorang harus menggunakan:
Ini akan menyuntikkan string yang disediakan ke editor iframe
<head><style id="mceDefaultStyles"></style> ...
Solusi 2
Gunakan wp_ajax sebagai penangan panggilan balik untuk menambahkan gaya dinamis pada editor init dengan menggunakan filter
sumber
add_editor_style( add_query_arg( 'action', 'my_editor_styles', admin_url( 'admin-ajax.php' ) )
karena ini adalah cara standar untuk tema untuk menambahkan gaya editor.mce_css
berhasil untuk Anda (jika Anda mencobanya).add_editor_style()
, tetapi seharusnya berfungsi dengan baik melihat kode. Menggunakanmce_css
sebenarnya adalah solusi yang lebih baik jika Anda perlu menghubungkan setelah gaya ditambahkan melaluiadd_editor_style()
. Salah satu alasan seperti itu dalam sebuah tema adalah karena URL lengkap yang ditambahkan viaadd_editor_style()
adalah keluaran pertama, meskipun urutannya ditambahkan.WordPress menyediakan
mce_css
filter , yang dapat digunakan untuk menambahkan stylesheet khusus ke Editor Visual. Menurut Codex:Contoh panggilan balik filter Codex, dimodifikasi untuk suatu Tema:
sumber
Saya menerima solusi di atas oleh @ungestaltbar. Namun, saya ingin sedikit memperluas jawaban ini dengan solusi lengkap yang saya gunakan sehingga orang lain dapat melihat cara kerjanya.
Saya harap tidak apa-apa untuk mengirim jawaban lain di sini seperti ini. Saya tidak melihat cara memposting ini sebagai jawaban langsung untuk solusi yang saya terima. Saya masih belajar cara menggunakan WPSE.
sumber
add_action( 'wp_ajax_nopriv_my_editor_styles', 'my_editor_styles_callback' );
jika editor digunakan di frontend (untuk pengguna yang tidak masuk).Saya mungkin terlambat ke pesta ini, tetapi setelah menggunakan solusi di atas, saya segera menyadari bahwa kecepatan memuat halaman dari editor telah sangat lumpuh! Melihat tajam pada kode, saya menyadari bahwa kode terus mengeksekusi lama setelah tinyMCE.activeEditor telah diinisialisasi. Kode menggunakan metode setInterval () yang mengevaluasi ekspresi pada interval yang ditentukan, saya percaya itu karena Anda tidak dapat menentukan pada titik mana selama eksekusi kode "activeEditor" akan tersedia. Inilah yang membuat kecepatan halaman berlutut.
Solusi yang jauh lebih baik yang saya gunakan untuk membangun sebuah plugin adalah ini
Di sini pendengar TinyMCE asli digunakan untuk mengeksekusi kode setelah editor aktif diinisialisasi. Saya harap ini akan membantu seseorang di luar sana. Salam.
sumber
Ini adalah solusi yang dimodifikasi yang diposting di forum WordPress.org untuk pertanyaan ini: http://wordpress.org/support/topic/customdynamic-css-in-tinymce?replies=14#post-4827573
Ini pasti berhasil. Saya bukan guru JS, jadi saya tidak sepenuhnya yakin apakah ini solusi terbaik.
Ini juga dapat ditambahkan ke file JS. Anda bisa dengan mudah melewatkan variabel melalui
wp_localize_script()
itu.sumber