web-dev-qa-db-ger.com

Verhindert den Versions-URL-Parameter (? Ver = X.X.X) für in die Warteschlange eingereihte Stile und Skripte

Anwendungsfall

Ich habe mit den Funktionen von Chrome Dev Tools Workspace experimentiert. Es beinhaltet die Möglichkeit, eine Datei direkt in Dev Tools zu bearbeiten und das gespeicherte Stylesheet selbst aktualisieren zu lassen (oder es sogar zu kompilieren und dann zu aktualisieren!).

Wie jedoch in der Frage StackOverflow-Frage "Chrome lädt beim Neukompilieren von CSS automatisch generiertes CSS nicht neu" dokumentiert, verhindern URL-Parameter in der Stylesheet-URL, dass Chrome die Änderung bemerkt.

Gewünschtes Ergebnis

Das bedeutet, dass ich nur während der Entwicklung den ?ver=X.X.X aus dem normalen Stylesheet entfernen wollte, den <link> von wp_enqueue_style() ausgegeben hat. Mit anderen Worten, ich wollte den Standardwert href:

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

um stattdessen das zu sein:

http://localhost/mysite/wp-includes/style.css
11
mrwweb

Standardverhalten von wp_enqueue_[style/script]()

Der Standardwert für das Argument $version von wp_enqueue_style() ist false. Diese Standardeinstellung bedeutet jedoch nur, dass die Stylesheets stattdessen die WordPress-Version erhalten.

Lösung

Dank "Remove version from WordPress enqueued CSS and JS" habe ich die undokumentierte Tatsache erfahren, dass die Übergabe von null als Version die gesamte Version entfernt!

Beispiel

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

Vorsichtsmaßnahme

Wie in der Frage erwähnt, sollte dies wahrscheinlich nur während der Entwicklung erfolgen (wie im speziellen Anwendungsfall). Der version-Parameter hilft beim Zwischenspeichern (und nicht beim Zwischenspeichern) für Site-Besucher und sollte daher in 99% der Fälle allein gelassen werden.

11
mrwweb

Vielen Dank für Ihren Beitrag, mrwweb.

Ich habe eine andere Lösung gefunden, indem ich ein sehr einfaches Plugin erstellt habe, das Sie deaktivieren können, wenn sich die Site nicht mehr in der Entwicklung befindet.

<?php

/*
Plugin name: Strip WP Version in Stylesheets/Scripts
*/

function switch_stylesheet_src( $src, $handle ) {

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

?>

Ich habe ein paar Minuten damit verbracht, diese Lösung zu finden. Dachte, ich könnte hier eine andere Option teilen, anstatt eine neue Frage/Antwort zu erstellen.

8
Ricardo Andres