Gibt es eine Methode, um die Aktualisierung zu erzwingen editor-style.css
, wenn ich das Stylesheet für den TinyMCE-Editor manuell ändere? Änderungen werden nicht sofort angezeigt, sie werden jedoch auf der Administrationsseite des Administrations-Backends zwischengespeichert.
Zum Beispiel so:
editor-style.css?ver=3393201
Antworten:
Dafür gibt es einen Haken :
'mce_css'
. Es wird aufgerufen_WP_Editors::editor_settings()
und Sie erhalten alle geladenen Stylesheets als ersten und einzigen Parameter durch Kommas getrennt.Jetzt ist es ganz einfach: Verwenden Sie die globale Variable
$editor_styles
(hier sind die Editor-Stylesheets Ihres Themas und des übergeordneten Themas bereits gespeichert), fügen Sie den Zeitpunkt der letzten Änderung der Datei als Parameter hinzu und erstellen Sie die Zeichenfolge neu.Als Plugin :
quelle
functions.php
Datei und nicht in einem Plugin) mit WP 4.6.1 funktioniert einwandfrei. Es scheint keine Probleme beim Hinzufügen von Medien oder Bearbeiten von Medien inline zu geben. Es ist verrückt , dass Sie nicht ein Argument hinzufügen könnenadd_editor_css
mitfilemtime
der Art und Weise kann man mitwp_enqueue_style
oder sogar einem Müll String am Ende des Dateinamen ... aber das ist völlig funktioniert.<!--more-->
Tag bei Aktivierung des Plugins nicht in TinyMCE angezeigt wird. Irgendwelche Ideen, wie ich das lösen kann?Ich konnte die Antwort von toscho für die aktuelle Version von WordPress (4.7.2) nicht erhalten, und das scheint daran zu liegen, dass für das TinyMCE-Init-Array ein cache_suffix festgelegt ist
'wp-mce-' . $tinymce_version
.Stattdessen können Sie dies einfach mit dem Filter tiny_mce_before_init überschreiben , wie folgt :
Das ist natürlich nicht annähernd so gut wie
filemtime()
, aber zumindest funktioniert dies in 4.7.2.Hinweis: Dadurch wird der Cache-Buster auch anderen Editorstilen hinzugefügt (z. B. skin.min.css, content.min.css, dashicons.min.css und wp-content.css).
quelle
$mce_init['cache_suffix'] = "v=" . time();
oder etwas noch Einfacherem wie$mce_init['cache_suffix'] = "v=" . rand(100000000,999999999);
Anstatt nur
add_editor_style
mit Ihrer CSS-Datei aufzurufen , fügen Sie einen Cache-Buster-Abfragezeichenfolgenparameter hinzu:quelle
filemtime()
um Cache-Busting-Updates zu automatisieren:add_editor_style(get_stylesheet_directory_uri() . '/editor-style.css?v=' . filemtime(get_stylesheet_directory() . '/editor-style.css'));
get_template_directory_uri()
), wenn ein Cache-Buster angehängt wird. sonst wird es nicht funktionieren.Ich hatte das gleiche Problem (2012, WP 3.4.2 !!). Mögliche Lösungen, während dieser Fehler vorliegt:
1) Wenn Sie Firebug verwenden, hilft [x] Browser-Cache im Netzfenster deaktivieren. Ich hatte sogar ein sehr seltsames Problem, dass der zwischengespeicherte Editor-Stil für den Bruchteil einer Sekunde kurz (in einem CSS-gefilterten) Firebug-Netz angezeigt wird und dann wieder verschwindet. Habe Screenshots gemacht, um es mir selbst zu beweisen.
2) Ein vollständiges Löschen des Browser-Cache hilft. Aus irgendeinem Grund trat das Problem danach nicht mehr auf.
3) Schließlich mein bevorzugter Rat, wenn Sie auch sicherstellen müssen, dass Ihre Clients auf Staging- oder Live-Servern Ihre inkrementellen Verbesserungen erhalten (ohne störende Ratschläge zur Cache-Freigabe):
Verschieben Sie die Datei und zählen Sie weiter:
Hacky, aber zuverlässig.
quelle
Das Problem mit der akzeptierten Antwort in den neuesten Versionen, von denen ich annehme, dass das
$editor_styles
Array nur Stylesheets enthält, die mithilfe des Themas hinzugefügt wurden. Daher werden die restlichen Stylesheets, die von Core WordPress oder Plugins hinzugefügt wurden, aus der zurückgegebenen Zeichenfolge entfernt.Im Folgenden finden Sie die Lösung, die ich nach dem Optimieren des Codes gefunden habe. Sie können sie in Ihrer Datei functions.php verwenden. Meine Lösung verwendet eine verschachtelte Schleife und
$editor_styles
sucht nach im Array vorhandenen Stylesheets. Hängt die zuletzt geänderte Zeit als Parameter an die Abfragezeichenfolge an und aktualisiert den Wert im Array.quelle