Rimuovere il parametro di versione URL (?ver=X.X.X) da stili e script enqueued

9 apr 2015, 02:24:05
Visualizzazioni: 17.3K
Voti: 17

Caso d'uso

Ho sperimentato con le funzionalità Workspace di Chrome Dev Tools. Include la possibilità di modificare un file direttamente in Dev Tools e fare in modo che il foglio di stile salvato si aggiorni automaticamente (o addirittura si ricompili e poi si aggiorni!).

Tuttavia, come documentato nella domanda StackOverflow "Auto-Reload Generated CSS" di Chrome non ricarica la pagina quando SASS ricompila il CSS", i parametri URL nell'indirizzo del foglio di stile impediscono a Chrome di rilevare le modifiche.

Risultato desiderato

Ciò significa che solo durante lo sviluppo, volevo rimuovere il ?ver=X.X.X dal normale <link> del foglio di stile generato da wp_enqueue_style(). In altre parole, volevo che l'href predefinito:

http://localhost/mysite/wp-includes/style.css?ver=4.1.1

venisse invece mostrato così:

http://localhost/mysite/wp-includes/style.css
0
Tutte le risposte alla domanda 3
0
17

Comportamento predefinito di wp_enqueue_[style/script]()

Il valore predefinito per l'argomento $version di wp_enqueue_style() è false. Tuttavia, questo valore predefinito significa semplicemente che ai fogli di stile viene assegnata la versione di WordPress invece.

Soluzione

Grazie a "Rimuovi la versione dai CSS e JS caricati in WordPress", ho scoperto il fatto non documentato che passando null come versione si rimuove completamente la versione!

Esempio

wp_enqueue_style( 'wpse-styles', get_template_directory_uri() . '/style.css', array(), null );

Promemoria Avvertenza

Vale la pena sottolineare, come notato nella domanda, che questo probabilmente dovrebbe essere fatto solo durante lo sviluppo (come nel caso d'uso specifico). Il parametro della versione aiuta con la cache (e il non caching) per i visitatori del sito e quindi probabilmente dovrebbe essere lasciato invariato nel 99% dei casi.

9 apr 2015 02:24:05
4
10

Grazie per il tuo post, mrwweb.

Ho trovato un'altra soluzione a questo problema, creando un plugin molto semplice che puoi disattivare quando il sito non è più in fase di sviluppo.

<?php

/*
Plugin name: Rimuovi Versione WP nei Fogli di Stile/Script
*/

function switch_stylesheet_src( $src, $handle ) {

        $src = remove_query_arg( 'ver', $src );
        return $src;
}
add_filter( 'style_loader_src', 'switch_stylesheet_src', 10, 2 );

?>

Ho impiegato un paio di minuti per trovare questa soluzione. Ho pensato di condividere un'altra opzione qui invece di creare una nuova Domanda/Risposta.

27 lug 2015 03:53:23
Commenti

non funziona...

reggie reggie
16 nov 2016 10:33:16

Questa è la risposta corretta. Usa questo filtro durante lo sviluppo e rimuovilo una volta online.

dtbaker dtbaker
26 giu 2017 03:24:27

Molto meglio di dequeue e queue styles. Applicabile anche agli script con il filtro script_loader_src

Dharma Dharma
3 ott 2018 11:52:17

Clutch! Ha funzionato alla perfezione.

Allen Gingrich Allen Gingrich
19 ott 2021 01:50:46
0

basandosi sul suggerimento di @ricardo-andres, un codice applicabile in qualsiasi momento, particolarmente utile per risorse su CDN (come jQuery) - eliminiamo questo tag di query dalle risorse che hanno già una versione inclusa nel loro nome

function clean_src( $src, $handle ) {
    if (preg_match('_\d[^\?/]*\?_', $src))
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'clean_src', 10, 2 );
add_filter( 'script_loader_src', 'clean_src', 10, 2 );

25 set 2020 18:06:45