Caching und Versionierung für rtl.css


7

Ich verwende filemtime(), um eine Versionsnummer für verschiedene CSS- und JS- Dateien in einem benutzerdefinierten WordPress- Design hinzuzufügen .

Ich habe die hier beschriebene akzeptierte Antwort als Richtlinie verwendet. Ich verwende jedoch die Funktionen wp_retister_style()und wp_register_script(), um meine CSS- und JS- Dateien zu registrieren und sie schließlich über wp_enqueue_style()und zu laden wp_enqueue_script(). Als Beispiel registriere ich die Datei sigle.css folgendermaßen :

wp_register_style('xyz_single', get_template_directory_uri() . '/css/single.css', false, filemtime(get_template_directory() . '/css/single.css'));

Der vierte Parameter in der obigen Funktion fügt dem Stylesheet ? Ver = nnnnnnnn hinzu . Die endgültige Ausgabe ist so etwas wie single.css? Ver = nnnnnnnn , wobei nnnnnnnn eine Zahl ist, die den Zeitstempel der geänderten Datei darstellt, um sicherzustellen, dass sie beim Ändern des Themas neu geladen wird, damit Probleme beim Zwischenspeichern behoben werden.

Nun zu meiner Frage.

In meinem benutzerdefinierten Thema verwende ich rtl.css , das beim wp_head()Aufruf automatisch für mich geladen wird. Wie füge ich rtl.css hinzu , um eine Versionsnummer aufzunehmen?


Mehr Informationen

In header.php lade ich style.css wie folgt:

<link href="<?php echo get_stylesheet_uri() . '?ver=' . filemtime(get_stylesheet_directory() . '/style.css'); ?>" rel="stylesheet" type="text/css" />

Ich lade alle anderen Stylesheets wp_register_style()wie oben beschrieben, gefolgt von wp_enqueue_style(). Hier ist ein Beispiel:

wp_register_style('xyz_single', get_template_directory_uri() . '/css/single.css', false, filemtime(get_template_directory() . '/css/single.css'));

wp_enqueue_style('xyz-single');

Allerdings rtl.css wird automatisch geladen , wenn ich rufe wp_head()in header.php . Bitte lesen Sie diese großen Artikel darüber , wie wp_head()Lasten rtl.css ; und daher meine Frage, wie kann ich rtl.css eine Versionsnummer hinzufügen, wenn sie automatisch aufgerufen wird?


2
Wie wird es geladen? Bitte bearbeiten Sie die Frage und erklären Sie. Bitte erläutern Sie auch den Kontext, der Sie daran hindert, rtl.css genauso zu behandeln wie style.css
Mark Kaplun

@ MarkKaplun - Danke, ich habe die Frage aktualisiert. Ich hoffe das erklärt es.
Greeso

Antworten:


6

Sie laden die Datei rtl.css auf die automatische Weise von WordPress. Das heißt, eine rtl.css im Themenordner wird von WordPress automatisch geladen, wenn sie die Richtung der aktuellen Sprache ir rtl anzeigt (Sie sollten diese Informationen der Frage hinzufügen Es war schwierig herauszufinden, wie Sie die Datei laden. Dieser Prozess definiert, locale_stylesheet_uridass Sie die URL des Gebietsschema-Stylesheets ändern können, damit Sie den Versionsparameter hinzufügen können:

add_filter( 'locale_stylesheet_uri', function ($localized_stylesheet_uri) {
    $time_ver = filemtime( get_stylesheet_directory() . '/rtl.css' );
    return add_query_arg( array('ver' => $time_ver), $localized_stylesheet_uri );
});

Wenn Sie auch Abhängigkeiten behandeln müssen, müssen Sie die Datei rlt.csswp_enqueue_style wie jede andere CSS- Datei laden . Keine Möglichkeit, Abhängigkeiten mit der "automatischen" Methode zu behandeln.


2

Basierend auf dem Artikel, auf den Sie hingewiesen haben, scheint es zwei einfache Optionen zu geben

  1. Verhindern Sie die automatische Aufnahme, indem Sie die Aktionen entfernen, mit denen sie hinzugefügt werden soll.

remove_action( 'wp_head', 'locale_stylesheet' );

und stelle es mit deinem eigenen Code in die Warteschlange, so etwas wie

global $$wp_locale; 

$stylesheet_dir_uri = get_stylesheet_directory_uri();
$dir = get_stylesheet_directory();
$locale = get_locale();


if ( !empty($wp_locale->text_direction) && file_exists("$dir/{$wp_locale->text_direction}.css") )
        enqueue "$stylesheet_dir_uri/{$wp_locale->text_direction}.css";
  1. Verwenden Sie den 'locale_stylesheet_uri'Filter und fügen Sie der URL das ''gewünschte Suffix hinzu, oder kehren Sie einfach zurück und stellen Sie es wie in # 1 selbst in die Warteschlange
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.