Come aggiungere la versione di style.css in WordPress

14 mar 2013, 13:46:53
Visualizzazioni: 94.1K
Voti: 25

Come aggiungere la versione di style.css in WordPress come posso fare in Joomla.

<link rel="stylesheet" href="/templates/example/css/style.css?v=1.2">

So che il style.css viene caricato dinamicamente. Per favore aiutami a capire come fare.

1
Commenti

Ecco un plugin https://wordpress.org/plugins/wp-css-version-history/ che aggiunge automaticamente un numero di versione al foglio di stile. Crea un nuovo foglio di stile che viene caricato per ultimo. Non è necessario svuotare la cache per vedere le modifiche. Utilizza l'editor CSS integrato di WordPress e il blocco file per la collaborazione in team.

Brian Holzberger Brian Holzberger
14 mag 2018 15:04:48
Tutte le risposte alla domanda 11
7
22

Il numero di versione è un parametro di wp_enqueue_style().

Come riportato nel Codex, ecco tutti i parametri che wp_enqueue_style accetta.

wp_enqueue_style( $handle, $src, $deps, $ver, $media );

Quindi, ad esempio, per caricare un foglio di stile con un numero di versione, dovresti fare quanto segue:

function wpa_90820() {
    wp_enqueue_style('my-styles', get_stylesheet_directory_uri() .'/my-styles.css', array(), '1.0' );       
}

add_action('wp_enqueue_scripts', 'wpa_90820');
14 mar 2013 13:54:19
Commenti

quando faccio questo il vecchio style.css continua a caricarsi. Come posso rimuoverlo?

Toretto Toretto
14 mar 2013 14:10:00

@VinodDalvi cosa intendi per handle. Non lo conosco, sono nuovo a WordPress per favore spiegamelo.

Toretto Toretto
14 mar 2013 14:14:44

@Toretto O il tuo tema lo sta includendo direttamente in header.php oppure il tuo tema lo sta caricando con un handle diverso (il primo parametro). La soluzione dipende anche dal fatto che tu stia modificando direttamente il functions.php del tuo tema o se hai creato un child theme.

helgatheviking helgatheviking
14 mar 2013 14:15:07

@Toretto, $handle viene mostrato nella mia risposta ed è anche descritto nel link che ho fornito alla pagina del Codex per wp_enqueue_style per favore fai i compiti.

helgatheviking helgatheviking
14 mar 2013 14:15:59

@helgatheviking come posso conoscere il vecchio nome dell'handler.

Toretto Toretto
14 mar 2013 14:18:39

@Toretto Se il tuo tema utilizza wp_enqueue_style() per caricare il foglio di stile in questione, allora il suo handle è il primo parametro. Se il tuo tema sta inserendo manualmente il foglio di stile in header.php allora non avrà un handle.

helgatheviking helgatheviking
14 mar 2013 14:22:54

ok ho capito, ho sostituito la mia funzione di stile del tema predefinito e ha iniziato a funzionare. grazie mille @helgatheviking.

Toretto Toretto
14 mar 2013 14:23:39
Mostra i restanti 2 commenti
1
22

Se sei uno sviluppatore di temi, potresti voler forzare il ricaricamento dei tuoi asset quando pubblichi una nuova versione.

La versione di un tema viene gestita nel file style.css

/*
    Theme Name: Nome del Tema
    Version: 1.0.2
*/

All'inizio del tuo functions.php:

$theme = wp_get_theme();
define('THEME_VERSION', $theme->Version); //ottiene la versione scritta nel tuo style.css

Successivamente, quando carichi CSS o JS, utilizza THEME_VERSION come quarto argomento:

function theme_styles()
{
    wp_enqueue_style('main', get_template_directory_uri().'/css/main.css', [], THEME_VERSION, 'all');
}
add_action('wp_enqueue_scripts', 'theme_styles'); 

Produrrà nella pagina:

.../nome-del-tuo-tema/css/main.css?ver=1.0.2 

Diventa utile quando hai più asset da gestire e non vuoi modificarli manualmente.

1 ott 2019 22:52:52
Commenti

Ho utilizzato questo metodo per un child theme, quindi abbiamo usato get_stylesheet_directory_uri() invece di get_template_directory_uri()

Carlos Carlos
7 apr 2021 15:40:25
4
14

Invece di codificare manualmente la versione, potresti trovare più conveniente in alcuni casi versionare dinamicamente il tuo foglio di stile, in modo che ogni volta che lo modifichi, cambi automaticamente e aggiorni immediatamente la cache del browser senza dover modificare ripetutamente il tuo functions.php.

Puoi usare filemtime() per farlo. Ecco come fare in uno stile figlio che fa riferimento al parent_style

    wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( $parent_style ), filemtime( get_stylesheet_directory() . '/style.css' )  );
17 nov 2017 20:28:52
Commenti

Nel tempo, ho iniziato a preferire le versioni del tema, ma è un'ottima idea usare filemtime() qui, se non si ha una pratica coerente di versionamento del tema.

jgangso jgangso
14 mar 2018 13:49:42

Questa è un'ottima soluzione! Ho appena usato array() per il terzo parametro perché sto usando un tema personalizzato senza genitore e ha funzionato perfettamente.

cam cam
19 ago 2021 01:24:57

Penso che questa sia una buona soluzione, puoi ancora usare qualcosa come "1.2.0" nel tuo style.css, non è necessario mostrarlo nel DOM dove viene caricato il CSS.

herrfischer herrfischer
1 mar 2024 11:26:01

È fantastico, funziona alla perfezione!! Grazie per questo.

Patrick Reiner Patrick Reiner
23 mar 2024 15:35:57
6

Puoi ottenere questo risultato utilizzando uno dei seguenti metodi:

1) Aggiungi il seguente tag nel file header.php del tema.

<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>'?v=1.2" type="text/css" media="all" />

2) Aggiungi il seguente codice nel file functions.php del tema.

function theme_styles()  
{ 
  // Registra lo stile in questo modo per un tema:  
  // (Prima il nome univoco per lo stile (custom-style) poi la sorgente, 
  // poi le dipendenze, numero versione e tipo media)
  wp_enqueue_style( 'style-css', get_template_directory_uri() . '/style.css', array(), '1.2', 'all' );
}
add_action('wp_enqueue_scripts', 'theme_styles');

Per maggiori informazioni vedi questa pagina.

14 mar 2013 14:01:01
Commenti

quando faccio questo il vecchio style.css viene ancora caricato. Come posso rimuoverlo?

Toretto Toretto
14 mar 2013 14:10:19

Qual è l'handle del vecchio style.css?

Vinod Dalvi Vinod Dalvi
14 mar 2013 14:13:52

se non riesci a trovare l'handle, copia e incolla qui l'intero URL di style.css... lo ricavo da lì...

Vinod Dalvi Vinod Dalvi
14 mar 2013 14:19:35

Oppure puoi dirmi qual è il nome del tuo tema o il nome della cartella del tema?

Vinod Dalvi Vinod Dalvi
14 mar 2013 14:23:42

Ok ho capito, ho sostituito la mia funzione di stile del tema predefinito e ha iniziato a funzionare. Grazie. +1 da parte mia.

Toretto Toretto
14 mar 2013 14:24:22

Prego... :)

Vinod Dalvi Vinod Dalvi
14 mar 2013 14:25:22
Mostra i restanti 1 commenti
1

il modo migliore per caricare i CSS nel tuo tema WordPress è il seguente codice nel file functions.php:

function theme_styles()  
{ 
  global $ver_num; // definisce una variabile globale per il numero di versione
  $ver_num = mt_rand() // ad ogni chiamata/caricamento dello stile $ver_num avrà un valore diverso
  wp_enqueue_style( 'style-css', get_template_directory_uri() . '/style.css', array(), $ver_num, 'all' );
}
add_action('wp_enqueue_scripts', 'theme_styles');

Questo è il modo corretto per caricare gli stili nel tuo tema ed è anche il migliore per scopi di staging/testing perché ogni refresh fornirà la versione aggiornata dello stile.

Se vuoi evitare il caricamento con il primo metodo, puoi usare questa versione abbreviata e inserire la seguente riga nel tuo file header.php per ottenere lo stesso risultato:

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

Saluti

8 giu 2015 11:40:56
Commenti

Questa è una pessima idea, perché costringe i file a essere scaricati di nuovo e ancora e ancora ad ogni caricamento di pagina.

Sobral Sobral
13 giu 2024 22:24:46
0

Prova questo:

Aggiungi questo a functions.php

function autoVer($filename){
    $url = get_template_directory_uri() . $filename;
    $file = get_template_directory() . $filename;
    if ( file_exists($file)) {
        return $url . '?v=' .md5(date("FLdHis", filectime($file)) . filesize($file));
    }
    clearstatcache();
}

Aggiungi questo all'header o al footer -> autoVer('/js/main.js');

16 mar 2017 10:52:55
0

Contrariamente ai metodi presentati finora, credo sia meglio utilizzare il numero di versione che appare in cima al tuo file style.css:

// style.css
/**
Theme Name: My theme
...
Version: 1.2.3
...
**/

Per utilizzare la versione del tema nei tuoi css, aggiungi il seguente codice al tuo file functions.php (o equivalente):

<?php

wp_enqueue_style(
    'my-theme',
    get_stylesheet_directory_uri() . '/style.css',
    [],
    wp_get_theme()->get('Version')
);

Questo significa che, dopo aver modificato il tuo file style.css, tutto quello che devi fare è cambiare il numero di versione in cima allo stesso file per vedere le modifiche nel frontend.

Se esamini la sezione head dell'HTML del tema, vedrai quanto segue:

<link rel='stylesheet'
    id='my-theme-css'
    href='... style.css?ver=1.2.3'
    type='text/css'
    media='all'
/>
28 feb 2020 20:28:11
0

Un'altra soluzione, se ancora non riesci a risolvere, è cambiare il nome del file style.css del tuo child theme in, ad esempio, style2.css e poi modificarlo nel file functions.php del tuo child theme, come mostrato di seguito:

wp_enqueue_style( 'style', get_stylesheet_directory_uri() .'/style2.css' );

Questo farà sì che WordPress richieda e serva un nuovo file CSS per il tuo sito web.

22 lug 2020 02:20:25
2

Qui utilizziamo la funzione wp_get_theme() di WordPress per ottenere la versione del tema (come specificato nel foglio di stile del tema, style.css):

// ottieni la versione del tema
function rave_get_version() {
    $theme_data = wp_get_theme();
    return $theme_data->Version;
}
$theme_version = rave_get_version();
global $theme_version;

wp_enqueue_style( 'main-style', get_template_directory_uri() .'/assets/css/style.css', [], THEME_VERSION, 'all' );
13 giu 2021 08:13:12
Commenti

Non credo che questo risponda alla domanda, che era come aggiungere il numero di versione all'URL CSS, presumo per il cache-busting.

Rup Rup
13 giu 2021 11:52:23

wp_enqueue_style( 'main-style', get_template_directory_uri() .'/assets/css/style.css', [], THEME_VERSION, 'all' );

Arif Rahman Arif Rahman
14 giu 2021 11:13:12
0

In realtà non hai bisogno di invalidare la cache del file style.css.

Puoi scrivere il tuo file css e poi accodarlo come ha scritto @vinod dalvi.

function theme_styles()  
{ 
  wp_enqueue_style('stylecss', get_template_directory_uri().'/tuonome.css', array(), '1.2', 'all');
}
add_action('wp_enqueue_scripts', 'theme_styles');

In base alle regole del browser, l'ultimo file css ha priorità più alta, quindi assicurati di usare !important nel tuo codice css se necessario.

Buona fortuna.

10 ago 2021 14:29:00
1
-1

Questo è un metodo piuttosto diretto per ottenere il numero di versione chiamando la funzione bloginfo($show) due volte. Prima per il foglio di stile e poi per il numero di versione.

<link rel="stylesheet" id="style-css" href="<?php bloginfo('stylesheet_url'); ?>?ver=<?php bloginfo('version'); ?>" type="text/css" media="all" />

È tutto qui. Spero che sia d'aiuto o utile. Puoi esaminare tutti i parametri disponibili e vedere cosa puoi ottenere con la funzione bloginfo().

Ignora il mio commento poiché @Ravs ha fatto notare il mio errore riguardo al parametro 'versions' per la funzione bloginfo(). In effetti stampa il numero di versione di WordPress.

5 giu 2013 23:49:07
Commenti

Penso che non sia la risposta corretta perché <?php bloginfo('version')?> restituisce la versione corrente di WordPress, mentre la domanda riguarda l'aggiunta della versione di style.css, non della versione di WordPress.

Ravinder Kumar Ravinder Kumar
6 giu 2013 02:25:55