Comment mettre en cache un thème enfant style.css


8

Il peut y avoir plusieurs aspects à ma question, mais je pense que c'est essentiellement simple: comment vous assurer que les modifications apportées à un thème enfant style.csssont correctement propagées dans les caches?

J'ai lu à quelques endroits que WP devrait / devrait placer la version WP nnnlorsque la ressource est récupérée en tant que http://host/wp-content/themes/theme-child/style.css?ver=nnn. Dans mon installation sur http://frightanic.com/ je vois que la version du thème parent est utilisée à la place. J'ai W3 Total Cache et un CDN en place, mais même s'ils sont désactivés, une ressource comme wp-content/themes/frightanic/style.css?ver=3.0.7est demandée. 3.0.7est la version du thème parent Decode .

Quoi qu'il en soit, si je mets à jour mon CSS de thème enfant sans mettre à jour WP ou le thème parent en même temps, comment puis-je le supprimer des caches?


Réponses:


11

Le commentaire de @ dalbaeb a finalement conduit à des discussions perspicaces et à une solution réalisable. Merci beaucoup!

Je crois que la raison pour laquelle mon CSS de thème enfant a été chargé 'ver=<parent-theme-version>était parce que j'avais suivi le WP Codex sur les thèmes enfants 1: 1. Ma functions.phpcontenait ceci:

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

Le code que j'ai fini par utiliser a été mentionné pour la première fois dans https://wordpress.stackexchange.com/a/182023/30783, mais de nombreux sites sur Internet l'ont copié-collé (sans donner le crédit approprié).

// 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);
}

Mise à jour 2017-01-26

Le manuel WP Theme actuel contient désormais un correctif approprié :: https://developer.wordpress.org/themes/advanced-topics/child-themes/#3-enqueue-stylesheet


Agréable! Si vous avez répondu à votre propre question, vous pouvez accepter votre propre réponse comme solution.
phatskat

Je sais, mais vous devez attendre 2 jours jusqu'à ce que cette fonction soit disponible.
Marcel Stör

3
Le manuel WP Theme actuel contient désormais un correctif approprié: developer.wordpress.org/themes/advanced-topics/child-themes/…
Marcel Stör

1

Cela fonctionne bien lorsque vous ajoutez directement dans votre header.php et actualisez le cache à chaque fois que vous mettez à jour votre fichier css:

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

Il affiche: style.css? 324932684 où le nombre est l'heure à laquelle le fichier a été modifié


1
Les styles doivent être mis en file d'attente à l'aide wp_enqueue_styled'un codage en dur.
bravokeyl

0

Cela peut également fonctionner. Utilisation de la fonction php rand:

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
Ce n'est pas une bonne idée car vous voulez que ces actifs soient traçables par le navigateur tant qu'ils ne changent pas.
Marcel Stör
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.