Come invalidare la cache del file style.css di un child theme
La mia domanda potrebbe avere diversi aspetti ma in sostanza è semplice: come ci si assicura che le modifiche apportate al file style.css
di un child theme vengano propagate correttamente attraverso le cache?
Ho letto in diversi posti che WordPress dovrebbe/inserirebbe la versione di WP in nnn
quando la risorsa viene recuperata come http://host/wp-content/themes/theme-child/style.css?ver=nnn
. Nella mia installazione su http://frightanic.com/ vedo che invece viene utilizzata la versione del tema genitore.
Ho W3 Total Cache e un CDN attivi ma anche se vengono disabilitati viene richiesta una risorsa come wp-content/themes/frightanic/style.css?ver=3.0.7
. 3.0.7
è la versione del tema genitore Decode.
Ma comunque sia, se aggiorno il CSS del mio child theme senza aggiornare contemporaneamente WordPress o il tema genitore, come posso forzare l'invalidamento della cache?

Il commento di @dalbaeb alla fine ha portato a discussioni approfondite e a una soluzione fattibile. Grazie mille!
Credo che il motivo per cui il CSS del mio child theme veniva caricato con 'ver=<parent-theme-version>
fosse perché avevo seguito alla lettera il WP Codex sui child theme. Nel mio functions.php
c'era questo codice:
add_action('wp_enqueue_scripts', 'theme_enqueue_styles');
function theme_enqueue_styles() {
wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');
}
Il codice che ho finito per usare è stato menzionato per la prima volta in https://wordpress.stackexchange.com/a/182023/30783 ma numerosi siti su Internet lo hanno copiato e incollato (senza dare il giusto credito).
// Assicurarsi che il child theme abbia una versione indipendente e possa invalidare le cache: https://wordpress.stackexchange.com/a/182023/30783
// Filtra get_stylesheet_uri() per restituire il foglio di stile del tema genitore
add_filter('stylesheet_uri', 'use_parent_theme_stylesheet');
// Carica gli script e gli stili di questo tema (dopo il tema genitore)
add_action('wp_enqueue_scripts', 'my_theme_styles', 20);
function use_parent_theme_stylesheet()
{
// Usa il foglio di stile del tema genitore
return get_template_directory_uri() . '/style.css';
}
function my_theme_styles()
{
$themeVersion = wp_get_theme()->get('Version');
// Carica il nostro style.css con la nostra versione
wp_enqueue_style('child-theme-style', get_stylesheet_directory_uri() . '/style.css',
array(), $themeVersion);
}
Aggiornamento 2017-01-26
L'attuale manuale dei temi di WP ora contiene una soluzione corretta: https://developer.wordpress.org/themes/advanced-topics/child-themes/#3-enqueue-stylesheet

Ottimo! Se hai risposto alla tua stessa domanda, va bene accettare la tua risposta come soluzione.

Lo so, ma devi aspettare 2 giorni fino a quando quella funzione non sarà disponibile.

L'attuale manuale dei temi di WP ora contiene una correzione adeguata: https://developer.wordpress.org/themes/advanced-topics/child-themes/#3-enqueue-stylesheet

Funziona bene quando aggiungi direttamente nel tuo header.php e aggiorni la cache ogni volta che modifichi il file css:
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); echo '?' . filemtime( get_stylesheet_directory() . '/style.css'); ?>" type="text/css" media="screen" />
Mostra: style.css?324932684 dove il numero rappresenta l'ora in cui il file è stato modificato

Anche questo potrebbe funzionare. Utilizzando la funzione 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' );

WordPress ora gestisce questo con una funzione.
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
function my_theme_enqueue_styles() {
wp_enqueue_style( 'child-style', get_stylesheet_uri(),
array( 'parenthandle' ),
wp_get_theme()->get('Version') // questo funziona solo se hai Version nell'intestazione dello stile
);
}
Utilizza il Version: 1.0.0
nel tuo foglio di stile effettivo Inserisci foglio di stile con revisione
