Czy istnieje metoda wymuszenia odświeżenia editor-style.css
przy ręcznej zmianie arkusza stylów dla edytora TinyMCE? Modyfikacja nie pojawia się od razu, ale będą buforowane po stronie administratora zaplecza administracyjnego.
Na przykład tak:
editor-style.css?ver=3393201
Odpowiedzi:
Jest hak na to:
'mce_css'
. Jest wywoływany,_WP_Editors::editor_settings()
a wszystkie załadowane arkusze stylów są oddzielane przecinkami jako pierwszy i jedyny parametr.Teraz jest to proste: użyj zmiennej globalnej
$editor_styles
(tutaj są już zapisane arkusze stylów edytora motywu i motywu nadrzędnego), dodaj czas ostatniej modyfikacji pliku jako parametr i odbuduj ciąg.Jako wtyczka :
źródło
functions.php
pliku zamiast wtyczki) w WP 4.6.1, działa idealnie. Wydaje się, że nie ma żadnych problemów z dodawaniem lub edycją multimediów bezpośrednio. To szalone, że nie można dodać argumentadd_editor_css
przyfilemtime
okazji można zwp_enqueue_style
lub nawet ciąg śmieci na końcu nazwy pliku ... ale to zupełnie działa.<!--more-->
tag nie jest wyświetlany w TinyMCE. Wszelkie pomysły, jak mogę to rozwiązać?Nie mogłem uzyskać odpowiedzi toscho na działanie dla bieżącej wersji WordPress (4.7.2), i wydaje się, że dzieje się tak, ponieważ tablica inicjująca TinyMCE ma ustawioną wartość cache_suffix
'wp-mce-' . $tinymce_version
.Zamiast tego możesz po prostu zastąpić to filtrem tiny_mce_before_init , na przykład:
Oczywiście nie jest to tak dobre
filemtime()
, ale przynajmniej działa to w 4.7.2.Uwaga: powoduje to także dodanie bufora pamięci podręcznej do innych stylów edytora (takich jak skin.min.css, content.min.css, dashicons.min.css i wp-content.css)
źródło
$mce_init['cache_suffix'] = "v=" . time();
lub czegoś jeszcze prostszego$mce_init['cache_suffix'] = "v=" . rand(100000000,999999999);
Zamiast po prostu wywoływać za
add_editor_style
pomocą pliku CSS, dodaj parametr ciągu zapytania pomijania pamięci podręcznej:źródło
filemtime()
aby zautomatyzować aktualizacje pomijania pamięci podręcznej:add_editor_style(get_stylesheet_directory_uri() . '/editor-style.css?v=' . filemtime(get_stylesheet_directory() . '/editor-style.css'));
get_template_directory_uri()
), gdy dołączasz klaster pamięci podręcznej; inaczej to nie zadziała.Miałem ten sam problem (2012, WP 3.4.2 !!). Możliwe rozwiązania tego błędu:
1) Jeśli używasz firebuga, pomaga [x] Wyłącz pamięć podręczną przeglądarki w panelu Net. Miałem nawet bardzo dziwny problem, że buforowany styl edytora na krótko pojawia się (w filtrowanym przez css) panelu sieci Firebug na ułamek sekundy, a następnie znika ponownie. Zrobiłem zrzuty ekranu, żeby się przekonać.
2) Pomaga pełne czyszczenie pamięci podręcznej przeglądarki. Z jakiegokolwiek powodu potem problem nie pojawił się ponownie.
3) Na koniec, moja preferowana rada, jeśli musisz się upewnić, to znaczy, że Twoi klienci na serwerze tymczasowym lub serwerze na żywo uzyskają twoje stopniowe ulepszenia (bez żadnych irytujących porad dotyczących czyszczenia pamięci podręcznej):
Przenieś plik i kontynuuj liczenie:
Zuchwały, ale niezawodny.
źródło
Zakładam, że problem z zaakceptowaną odpowiedzią w najnowszych wersjach polega na tym, że
$editor_styles
tablica zawiera tylko arkusze stylów dodane przy użyciu motywu, w wyniku czego usuwa pozostałe arkusze stylów dodane przez podstawowy edytor tekstu lub wtyczki ze zwracanego ciągu.Poniżej znajduje się rozwiązanie, które wymyśliłem po poprawieniu kodu, możesz go użyć w pliku functions.php. Moje rozwiązanie wykorzystuje zagnieżdżoną pętlę i sprawdza, czy arkusze stylów są obecne w
$editor_styles
tablicy, i dołącza czas ostatniej modyfikacji jako parametr do zapytania o ciąg i aktualizuje wartość w tablicy.źródło