Assegnare la data di modifica come versione di un file incluso in WordPress

Per includere un file JavaScript o CSS nel proprio tema si possono utilizzare rispettivamente le funzioni wp_enqueue_script e wp_enqueue_style. Il quarto parametro di entrambe le funzioni specifica il numero di versione del file incluso (con il valore di default FALSE usa la versione di WordPress e con NULL non viene specificata la versione). Il numero di versione viene appeso alla fine del percorso del file e forza i browser a non usare il file presente in cache quando cambia la versione.

Se si includono librerie (come jQuery o uno dei suoi tanti plug-in) si può usare il numero di versione della release, ma per file che sono abbastanza stabili e che non hanno un numero di versione (come i file CSS e JavaScript di un tema realizzato da noi) si può usare la data di modifica del file.
Per non dover inserire a mano la funzione filemtime in tutti i file inclusi in un tema ho creato la funzione che potete vedere qui sotto. Il primo parametro stabilisce il tipo di file da includere ("script" per i file JavaScript e "style" per i file CSS), i parametri $handle, $src e $deps riprendono quelli di wp_enqueue_script e wp_enqueue_style e $more_params è un elenco di altri parametri specifici di wp_enqueue_script (come $in_footer) e wp_enqueue_style (come $media).

/**
 * Include un file esterno al tema con la data di modifica come versione
 * @param string $type tipo di file (script o style)
 * @param string $handle nome dello script
 * @param string $src URL dello script
 * @param array $deps elenco delle dipendenze
 * @param array $more_params altri parametri di wp_enqueue_script e wp_enqueue_style
 */
function my_include_asset($type, $handle, $src = false, $deps = array(), $more_params = array()) {
	$ver = false;
	if (is_string($src) && trim($src) != '') {
		$theme_uri = get_theme_root_uri();
		if (strpos($src, $theme_uri) === 0) {
			$path = get_theme_root().str_replace($theme_uri, '', $src);
			if (is_file($path)) {
				$ver = filemtime($path);
			}
		}
	}
	$params = array_merge(
		array($handle, $src, $deps, $ver),
		is_array($more_params) ? array_values($more_params) : array($more_params)
	);
	switch (is_string($type) ? $type : null) {
		case 'script':
			$function = 'wp_enqueue_script';
		break;
		case 'style':
			$function = 'wp_enqueue_style';
		break;
		default:
			$function = null;
		break;
	}
	if ($function) {
		call_user_func_array($function, $params);
	}
}


Questo è un esempio di utilizzo della funzione per includere un file JavaScript che dipende da jQuery.
my_include_asset('script', 'general-scripts', get_stylesheet_directory_uri().'/js/scripts.js', array('jquery'));


Questo è un esempio di utilizzo della funzione per includere un file CSS.
my_include_asset('style', 'general-style', get_stylesheet_directory_uri().'/style.css');

Guida scritta da il 25/06/2015.

Le ultime guide della categoria WordPress:

comments powered by Disqus