it-swarm.com.de

Zuweisen einer Versionsnummer zum Haupt-Stylesheet eines untergeordneten Themas

In der Datei header.php möchte ich dem Stylesheet eine Versionsnummer zuweisen, damit der Browser sie aktualisieren muss. Wenn Sie jedoch mit einem untergeordneten Thema arbeiten, wird dessen Stylesheet nicht explizit aufgerufen, sondern von WordPress automatisch gesucht. Wie oder wo kann dem Stylesheet des untergeordneten Themas eine Versionsnummer zugewiesen werden?

9
drake035

Sie können die Version im Stylesheet für untergeordnete Themen selbst aktualisieren ...

/*
 Theme Name:   Twenty Fourteen Child
 Theme URI:    http://example.com/twenty-fourteen-child/
 Description:  Twenty Fourteen Child Theme
 Author:       John Doe
 Author URI:   http://example.com
 Template:     twentyfourteen
 Version:      1.1.2 <---- Update here
*/
4
Matt Royal

Ich denke, der beste Weg, dies zu tun, ist, das Stylesheet für untergeordnete Themen (style.css) leer zu lassen und nur die notwendigen Kommentare (wie Themenname, Beschreibung usw., damit WordPress Ihr Thema erkennt) und dann eine andere CSS-Datei in Ihrem CSS zu erstellen. Themennamen-Ordner/css/main.css

Danach können Sie auf function.php jedes Mal eine neue "Version" haben, wenn Sie Ihre Datei ändern:

function my_scripts_and_styles(){

$cache_buster = date("YmdHi", filemtime( get_stylesheet_directory() . '/css/main.css'));
wp_enqueue_style( 'main', get_stylesheet_directory_uri() . '/css/main.css', array(), $cache_buster, 'all' );

}

add_action( 'wp_enqueue_scripts', 'my_scripts_and_styles', 1);

Die Logik:

Jedes Mal, wenn Sie die Datei speichern, wird die geänderte Uhrzeit der Datei geändert. Die neue Zeit wird an die Datumsfunktion übergeben, um die Zeit (filemtime gibt eine Ganzzahl zurück, die die Uhrzeit darstellt) in das Datumsformat umzuwandeln, sodass eine Zeichenfolge im gewünschten Format erstellt wird. In unserem Beispiel wird die Uhrzeit mit einer Genauigkeit von Minuten formatiert. Sie können es ändern, um sogar eine Sekunde zu verfolgen, dh "YmdHis". Danach wird die neue Änderungszeit der Datei als neue Version an wp_enqueue_style übergeben.

Referenz:

http://www.php.net/filemtime

http://php.net/manual/en/function.date.php

9
Laxmana

Was Sie tun müssen, ist die Registrierung des Hauptstils per Handle aufzuheben und dann mit Ihrer Versionsnummer neu zu registrieren. In diesem Fall lautet das Handle style-css.

Sie können das zu verwendende Handle anhand des gerenderten Stylesheet-Links ermitteln:

<link rel='stylesheet' id='style-css-css'  href='http://site-url/wp-content/themes/child-theme/style.css?ver=4.6.1' type='text/css' media='all' />

Hier ist die ID style-css-css, was bedeutet, dass unser Handle style-css ist.

Fügen Sie dies in die function.php Ihres Child-Themes ein:

function wpse_145141_change_style_version(){
    // First de-register the main stylesheet
    wp_deregister_style( 'style-css' );
    // Then add it again, using your custom version number
    wp_register_style( 'style-css', get_stylesheet_uri(), array(), "VERSION_NUMBER" );
    //finally enqueue it again
    wp_enqueue_style( 'style-css');
}

add_action( 'wp_enqueue_scripts', 'wpse_145141_change_style_version');
8
kraftner

Anstelle der Standarddatei style.css verwende ich normalerweise wp_enqueue_style in der Datei functions.php des untergeordneten Themas oder in einer anderen enthaltenen PHP-Datei. Sie hätten also immer noch die Datei style.css im untergeordneten Thema mit allen Details zum untergeordneten Thema, aber dann können Sie im untergeordneten Thema eine separate CSS-Datei für das eigentliche Styling des untergeordneten Themas haben (normalerweise füge ich dies in eine Datei assets/css ein Verzeichnis innerhalb des untergeordneten Themas). Auf diese Weise können Sie auch die CSS-Version mit dem 4. Parameter festlegen. Zum Beispiel:

function theme_name_child_scripts() {
    wp_enqueue_style( 'style-name', get_stylesheet_directory_uri() . '/assets/css/child-style.css', array(), '1.0.0', 'screen');
}

add_action( 'wp_enqueue_scripts', 'theme_name_child_scripts' );

Sie können der Aktion eine Priorität hinzufügen, wenn sie nicht in der richtigen Reihenfolge geladen wird, oder mit dem Abhängigkeitsparameter in wp_enqueue_style oben arbeiten:

add_action( 'wp_enqueue_scripts', 'theme_name_child_scripts', 20 );
0
Bjorn

Die aktuelle Top-Antwort ist themenabhängig, da der Theme-Entwickler diese untergeordnete Theme-Versionsnummer in eine Variable umwandeln und sie dann beim Einreihen in die untergeordnete style.css anhängen muss. Ich habe dies bei einigen Themen gesehen, aber nicht bei vielen. Das Folgende funktioniert mit jedem Thema, das die untergeordneten Stile in functions.php registriert - funktioniert nicht mit der alten @ import-Regel, die ich nicht mehr viel gesehen habe.

In functions.php des Child-Themas solltest du etwas Ähnliches haben:

// enqueue the child theme stylesheet

Function wp_schools_enqueue_scripts() {
wp_register_style( 'childstyle', get_stylesheet_directory_uri() . '/style.css'  );
wp_enqueue_style( 'childstyle' );
}
add_action( 'wp_enqueue_scripts', 'wp_schools_enqueue_scripts', 11);

Wenn Sie einen der folgenden Werte festlegen, wird bei jedem Speichern der Datei ein Zeitstempel als Versionsnummer angehängt, sodass jede Änderung des Stylesheets den lokalen Cache durchläuft:

// enqueue the child theme stylesheet

Function wp_schools_enqueue_scripts() {
wp_register_style( 'childstyle', get_stylesheet_directory_uri() . '/style.css', array(), filemtime( get_stylesheet_directory() . '/style.css' ) );
wp_enqueue_style( 'childstyle' );
}
add_action( 'wp_enqueue_scripts', 'wp_schools_enqueue_scripts', 11);

Hoffe das hilft jemandem. Ich benutze dies auf jeder Site, die ich aktiv verwalte.

0
Jeff Travilla

Ich glaube, wenn Sie das Stylesheet Ihres untergeordneten Themas mit dem Wordpress-Theme-Editor bearbeiten, wird bei jedem Speichern der Datei automatisch eine neue Versionsnummer angehängt.

0
selfagency