it-swarm.com.de

Wie man ein untergeordnetes Thema "style.css" zwischenspeichert

Meine Frage mag verschiedene Aspekte haben, aber ich bin der Meinung, dass es im Wesentlichen einfach ist: Wie stellen Sie sicher, dass Änderungen an einem untergeordneten Thema style.css ordnungsgemäß zwischen den Caches übertragen werden?

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

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

7
Marcel Stör

@ Dalbaebs Kommentar führte schließlich zu aufschlussreichen Diskussionen und einer möglichen Lösung. Danke vielmals!

Ich glaube, der Grund, warum mein CSS für untergeordnete Themen mit 'ver=<parent-theme-version> geladen wurde, war, dass ich den WP Codex für untergeordnete Themen 1: 1 befolgt hatte. Mein functions.php enthielt folgendes:

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 benutzte, wurde zum ersten Mal in https://wordpress.stackexchange.com/a/182023/30783 erwähnt, aber zahlreiche Websites im Internet haben ihn kopiert (ohne entsprechende Quellenangabe).

// 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 26.01.2017

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

10
Marcel Stör

Dies funktioniert gut, wenn Sie direkt in Ihrer header.php hinzufü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 die Zeit ist, zu der die Datei bearbeitet wurde

1
jcdarocha

Dies kann auch funktionieren. Verwendung 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' );
0
Joshua Coolman