Apakah ada metode untuk memaksa penyegaran editor-style.css
, ketika saya mengubah secara manual stylesheet untuk editor TinyMCE? Modifikasi tidak segera ditampilkan tetapi mereka akan di-cache di sisi admin administrasi backend.
Misalnya seperti ini:
editor-style.css?ver=3393201
Jawaban:
Ada hook untuk itu:
'mce_css'
. Ini dipanggil_WP_Editors::editor_settings()
dan Anda mendapatkan semua stylesheet yang dimuat koma dipisahkan sebagai parameter pertama dan satu-satunya.Sekarang mudah: Gunakan variabel global
$editor_styles
(berikut ini adalah stylesheet editor tema tema dan orangtua Anda sudah tersimpan), tambahkan waktu modifikasi terakhir file sebagai parameter dan buat kembali string.Sebagai plugin :
sumber
functions.php
file saya dan bukannya plugin) dengan WP 4.6.1, berfungsi dengan baik. Sepertinya tidak ada masalah dengan menambahkan media atau mengedit media sebaris. Gila bahwa Anda tidak dapat menambahkan argumenadd_editor_css
denganfilemtime
cara yang Anda bisawp_enqueue_style
, atau bahkan string sampah di akhir nama file ... tapi ini benar-benar berfungsi.<!--more-->
tag tidak ditampilkan dalam TinyMCE. Ada ide bagaimana saya bisa menyelesaikan ini?Saya tidak bisa mendapatkan jawaban toscho untuk bekerja untuk versi WordPress saat ini (4.7.2), dan itu tampaknya karena array init TinyMCE memiliki set cache_suffix diatur ke
'wp-mce-' . $tinymce_version
.Jadi sebagai gantinya, Anda bisa menimpanya dengan filter tiny_mce_before_init , seperti:
Tentu saja, ini hampir tidak sebagus
filemtime()
, tetapi setidaknya ini bekerja di 4.7.2.Catatan: Ini juga menambahkan cache buster ke gaya editor lain (seperti skin.min.css, content.min.css, dashicons.min.css, dan wp-content.css)
sumber
$mce_init['cache_suffix'] = "v=" . time();
atau sesuatu yang lebih sederhana$mce_init['cache_suffix'] = "v=" . rand(100000000,999999999);
Alih-alih hanya menelepon
add_editor_style
dengan file CSS Anda, tambahkan parameter string query buster cache:sumber
filemtime()
untuk mengotomatiskan pembaruan penghilang cache:add_editor_style(get_stylesheet_directory_uri() . '/editor-style.css?v=' . filemtime(get_stylesheet_directory() . '/editor-style.css'));
get_template_directory_uri()
), saat menambahkan cache buster; kalau tidak, itu tidak akan berhasil.Saya memiliki masalah yang sama (2012, WP 3.4.2 !!). Kemungkinan solusi saat bug ini ada:
1) Jika Anda menggunakan pembakar, [x] Nonaktifkan Cache Browser di panel Net membantu. Saya bahkan memiliki masalah yang sangat aneh, bahwa gaya editor cached singkat muncul (dalam css-filtered) panel jaring Firebug untuk sepersekian detik, daripada menghilang lagi. Mengambil tangkapan layar untuk membuktikan kepada diri saya sendiri.
2) Cache browser lengkap membantu. Untuk alasan apa pun sesudahnya masalah itu tidak muncul kembali.
3) Terakhir, saran pilihan saya, jika Anda juga harus memastikan, yaitu klien Anda di staging atau live server mendapatkan peningkatan tambahan Anda (tanpa saran izin cache yang mengganggu):
Pindahkan file dan terus menghitung:
Meretas, tetapi dapat diandalkan.
sumber
Masalah dengan jawaban yang diterima di versi terbaru yang saya asumsikan adalah
$editor_styles
array hanya berisi stylesheet yang ditambahkan menggunakan tema, sehingga sebagai hasilnya strip dari sisa stylesheet ditambahkan oleh core wordpress atau plugin dari string yang kembali.Berikut ini adalah solusi yang saya buat setelah mengubah kode, Anda dapat menggunakannya dalam file functions.php Anda. Solusi saya menggunakan nested loop dan memeriksa stylesheet yang ada dalam
$editor_styles
array, dan menambahkan waktu yang dimodifikasi terakhir sebagai parameter untuk kueri string dan memperbarui nilai dalam array.sumber