Wie man ein untergeordnetes Thema zwischenspeichert. Style.css


8

Meine Frage mag verschiedene Aspekte haben, aber ich finde es im Wesentlichen einfach: Wie stellen Sie sicher, dass Änderungen an einem untergeordneten Thema style.cssordnungsgemäß über Caches verteilt werden?

Ich habe an einigen Stellen gelesen, dass WP die WP-Version platzieren sollte / würde, nnnwenn die Ressource als abgerufen wird http://host/wp-content/themes/theme-child/style.css?ver=nnn. In meiner Installation unter http://frightanic.com/ sehe ich, dass stattdessen die übergeordnete Designversion verwendet wird. Ich habe W3 Total Cache und ein CDN eingerichtet, aber selbst wenn sie deaktiviert sind, wird eine Ressource wie wp-content/themes/frightanic/style.css?ver=3.0.7angefordert. 3.0.7ist die Version des übergeordneten Decode- Themas.

Aber wie auch immer, wenn ich mein untergeordnetes Thema CSS aktualisiere, ohne gleichzeitig WP oder das übergeordnete Thema zu aktualisieren, wie kann ich es dann aus den Caches entfernen?


Antworten:


11

@ dalbaebs Kommentar führte schließlich zu aufschlussreichen Diskussionen und einer praktikablen Lösung. Vielen Dank!

Ich glaube, der Grund, warum mein untergeordnetes Thema CSS mit geladen wurde, 'ver=<parent-theme-version>war, dass ich den WP-Codex zu untergeordneten Themen 1: 1 befolgt hatte . Mein functions.phpenthielt dies:

add_action('wp_enqueue_scripts', 'theme_enqueue_styles');
function theme_enqueue_styles() {
  wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
}

Der Code, den ich letztendlich verwendet habe, wurde zuerst in https://wordpress.stackexchange.com/a/182023/30783 erwähnt, aber zahlreiche Websites im Internet haben ihn kopiert (ohne entsprechende Gutschrift).

// Making sure your child theme has an independent version and can bust caches: https://wordpress.stackexchange.com/a/182023/30783
// Filter get_stylesheet_uri() to return the parent theme's stylesheet
add_filter('stylesheet_uri', 'use_parent_theme_stylesheet');
// Enqueue this theme's scripts and styles (after parent theme)
add_action('wp_enqueue_scripts', 'my_theme_styles', 20);

function use_parent_theme_stylesheet()
{
    // Use the parent theme's stylesheet
    return get_template_directory_uri() . '/style.css';
}

function my_theme_styles()
{
    $themeVersion = wp_get_theme()->get('Version');

    // Enqueue our style.css with our own version
    wp_enqueue_style('child-theme-style', get_stylesheet_directory_uri() . '/style.css',
        array(), $themeVersion);
}

Update 2017-01-26

Das aktuelle WP Theme-Handbuch enthält jetzt einen korrekten Fix: https://developer.wordpress.org/themes/advanced-topics/child-themes/#3-enqueue-stylesheet


Nett! Wenn Sie Ihre eigene Frage beantwortet haben, ist es in Ordnung, Ihre eigene Antwort als Lösung zu akzeptieren.
— Phatskat

Ich weiß, aber Sie müssen auf 2d warten, bis diese Funktion verfügbar ist.
— Marcel Stör

3
Das aktuelle WP Theme Handbuch enthält jetzt eine korrekte Korrektur: developer.wordpress.org/themes/advanced-topics/child-themes/…
— Marcel Stör

1

Dies funktioniert gut, wenn Sie direkt in Ihre header.php einfügen und den Cache jedes Mal aktualisieren, wenn Sie Ihre CSS-Datei aktualisieren:

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); echo '?' . filemtime( get_stylesheet_directory() . '/style.css'); ?>" type="text/css" media="screen" />

Es wird angezeigt: style.css? 324932684 wobei die Nummer der Zeitpunkt ist, zu dem die Datei bearbeitet wurde


1
Stile sollten wp_enqueue_styleanstelle von Hardcodierung in die Warteschlange gestellt werden .
— Bravokeyl

0

Dies kann auch funktionieren. Verwenden der PHP-Rand-Funktion:

function theme_enqueue_styles() {

    $parent_style = 'parent-style';

    wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style',
        get_stylesheet_directory_uri() . '/style.css?'.rand(),
        array( $parent_style )
    );
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );

1
Dies ist keine gute Idee, da diese Assets vom Browser zwischengespeichert werden sollen, solange sie sich nicht ändern.
— Marcel Stör
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.