Prevenirea parametrului de versiune în URL (?ver=X.X.X) pentru stiluri și scripturi încărcate

9 apr. 2015, 02:24:05
Vizualizări: 17.3K
Voturi: 17

Caz de utilizare

Am experimentat cu funcționalitățile Workspace din Chrome Dev Tools. Acestea includ posibilitatea de a edita un fișier direct în Dev Tools și de a avea fișierul CSS salvat reîncărcat automat (sau chiar compilat și apoi reîncărcat!).

Totuși, după cum este documentat în întrebarea de pe StackOverflow "Chrome's "Auto-Reload Generated CSS" not reloading page when SASS recompiles CSS", parametrii din URL-ul fișierului CSS împiedică Chrome să detecteze modificările.

Rezultatul dorit

Asta înseamnă că doar în timpul dezvoltării, am vrut să elimin ?ver=X.X.X din URL-ul normal al fișierului CSS afișat de wp_enqueue_style(). Cu alte cuvinte, am vrut ca valoarea implicită a href:

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

să devină:

http://localhost/mysite/wp-includes/style.css
0
Toate răspunsurile la întrebare 3
0
17

Comportamentul implicit al wp_enqueue_[style/script]()

Valoarea implicită pentru argumentul $version al funcției wp_enqueue_style() este false. Totuși, această valoare implicită înseamnă doar că fișierele de stil vor primi versiunea WordPress în loc.

Soluție

Datorită articolului "Remove version from WordPress enqueued CSS and JS", am aflat un detaliu nedocumentat: dacă transmitem null ca versiune, aceasta va elimina complet parametrul de versiune!

Exemplu

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

Precizare importantă

Este important de menționat, așa cum s-a precizat și în întrebare, că această abordare ar trebui folosită probabil doar în timpul dezvoltării (ca în cazul specific menționat). Parametrul de versiune ajută la gestionarea cache-ului (și la evitarea lui) pentru vizitatorii site-ului, așa că în 99% din cazuri ar trebui lăsat nemodificat.

9 apr. 2015 02:24:05
4
10

Mulțumesc pentru postarea ta, mrwweb.

Am găsit o altă soluție pentru aceasta, prin crearea unui plugin foarte simplu pe care îl poți dezactiva când site-ul nu mai este în dezvoltare.

<?php

/*
Plugin name: Elimină Versiunea WP din Fișierele de Stil/Scripturi
*/

function switch_stylesheet_src( $src, $handle ) {

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

?>

Am petrecut câteva minute încercând să găsesc această soluție. M-am gândit să împărtășesc o altă opțiune aici în loc să creez o nouă Întrebare/Răspuns.

27 iul. 2015 03:53:23
Comentarii

nu funcționează...

reggie reggie
16 nov. 2016 10:33:16

Acesta este răspunsul corect. Folosește acest filtru în timpul dezvoltării și elimină-l odată ce site-ul este live.

dtbaker dtbaker
26 iun. 2017 03:24:27

Mult mai bine decât deque și queue styles. De asemenea, aplicabil și scripturilor cu filtrul script_loader_src

Dharma Dharma
3 oct. 2018 11:52:17

Clutch! A funcționat perfect.

Allen Gingrich Allen Gingrich
19 oct. 2021 01:50:46
0

extinzând sugestia lui @ricardo-andres, un cod aplicabil oricând, în special pentru resursele de pe CDN (cum ar fi jQuery) - eliminăm acest tag de interogare de pe resursele care au o versiune inclusă în numele lor

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 sept. 2020 18:06:45