wake-up-neo.com

Skript/Stil registrieren: Ist es möglich, den Versionsabfrage-String über das Plugin anzupassen?

Erweiterung der Frage im Titel:

Ich möchte eine Möglichkeit (über ein Plugin) finden, Zeitstempel für die Abfragezeichenfolgen der JS- und CSS-Dateiversionen zu verwenden, die mit wp_register_style und wp_register_script ausgegeben werden.

Ich weiß, dass dies in den Aufrufen selbst leicht geändert werden kann, und ich mache es derzeit so:

$style_mtime = filemtime(dirname(__FILE__) . '/css/style.css');
wp_register_style( 'fstop-stylesheet', get_stylesheet_directory_uri() . '/library/css/style.css', array(), $style_mtime , 'all');
wp_enqueue_style( 'fstop-stylesheet' );

Ich würde es lieben, wenn ich den Timestamp-Teil in ein Plugin weitergeben könnte. Ich habe kürzlich dieses Plugin gefunden, das die Abfragezeichenfolge gut in den Dateinamen verschiebt, was zu einer besseren Zwischenspeicherung von Proxys führen sollte: https://Gist.github.com/ocean90/1966227

Und es funktioniert gut. Ich möchte das Timestamp-Bit hinzufügen, um den gesamten Prozess zu automatisieren.

Ideen?

1
Gabriel Luethje

Alte Antwort (basierend auf dem Missverständnis, dass Sie einen Cache-Buster wollten): Sie können add_query_arg () verwenden, um Abfrageargumente hinzuzufügen/zu ersetzen.

<?php
/**
* Plugin Name: wpse_84670
* Version: 0.0.1
* Description: replace script/style version with time as a cache buster
*/

/**
* replace script or stylesheet version with current time
* @param  string $url the source URL
* @return string
*/
function wpse_84670_time_as_version($url) {
    return add_query_arg(array('ver' => time()), $url);
}

add_filter('script_loader_src', 'wpse_84670_time_as_version');
add_filter('style_loader_src', 'wpse_84670_time_as_version');

Neue Antwort: Tu das nicht! Es wird ein Dateizugriff für jedes in die Warteschlange gestellte Skript und Stylesheet auf einer Seite erzwungen. Je nachdem, welche Plugins Sie aktiviert haben, kann dies zu einem zusätzlichen Dutzend oder mehr Dateizugriffen für jeden Zugriff auf eine Seite/einen Beitrag führen. Viele von ihnen werden nicht einmal dazu führen, dass der Browser diese Dateien anfordert (wenn Sie abgelaufene Zeiten für Skripte und Stylesheets konfiguriert haben - und das sollten Sie!).

Umschließen Sie stattdessen einfach Ihren Warteschlangencode mit einer Funktion für Ihr Thema, sodass Sie nur einen Dateizugriff für die Dateien vornehmen, auf die sich Ihr Thema in den Warteschlangen befindet.

Besser noch, behalten Sie eine fortlaufende Versionsnummer in Ihrem Thema (in meinen Themen nenne ich es $forceLoad) und verwenden Sie diese als die an wp_enqueue_script übergebene Version. Kein zusätzlicher Dateizugriff erforderlich.

$forceLoad = '42';
wp_enqueue_style('fstop-stylesheet', get_stylesheet_directory_uri() . '/library/css/style.css', false, $forceLoad, 'all');
2
webaware