PluginProbe
Autover / trunk
Autover vtrunk
1.9 trunk 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8
autover / autover.php

autover.php in Autover trunk, at autover.php

64 lines 1.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: Autover
4 * Plugin URI: https://wordpress.org/plugins/autover/
5 * Description: Automatically version your CSS and JS files enqueued through the Wordpress API
6 * Author: Presslabs
7 * Version: 1.9
8 * Author URI: https://www.presslabs.com/
9 */
10
11
12
13 add_filter( 'style_loader_src', 'autover_version_filter' );
14 add_filter( 'script_loader_src', 'autover_version_filter' );
15 function autover_version_filter( $src ) {
16 $url_parts = wp_parse_url( $src );
17
18 $extension = pathinfo( $url_parts['path'], PATHINFO_EXTENSION );
19 if ( ! $extension || ! in_array( $extension, [ 'css', 'js' ] ) ) {
20 return $src;
21 }
22
23 if ( defined( 'AUTOVER_DISABLE_' . strtoupper( $extension ) ) ) {
24 return $src;
25 }
26
27 $file_path = rtrim( ABSPATH, '/' ) . urldecode( $url_parts['path'] );
28 if ( ! is_file( $file_path ) ) {
29 return $src;
30 }
31
32 $timestamp_version = filemtime( $file_path ) ?: filemtime( utf8_decode( $file_path ) );
33 if ( ! $timestamp_version ) {
34 return $src;
35 }
36
37 if ( ! isset( $url_parts['query'] ) ) {
38 $url_parts['query'] = '';
39 }
40
41 $query = [];
42 parse_str( $url_parts['query'], $query );
43 unset( $query['v'] );
44 unset( $query['ver'] );
45 $query['ver'] = "$timestamp_version";
46 $url_parts['query'] = build_query( $query );
47
48 return autover_build_url( $url_parts );
49 }
50
51
52 function autover_build_url( array $parts ) {
53 return ( isset( $parts['scheme'] ) ? "{$parts['scheme']}:" : '' ) .
54 ( ( isset( $parts['user'] ) || isset( $parts['host'] ) ) ? '//' : '' ) .
55 ( isset( $parts['user'] ) ? "{$parts['user']}" : '' ) .
56 ( isset( $parts['pass'] ) ? ":{$parts['pass']}" : '' ) .
57 ( isset( $parts['user'] ) ? '@' : '' ) .
58 ( isset( $parts['host'] ) ? "{$parts['host']}" : '' ) .
59 ( isset( $parts['port'] ) ? ":{$parts['port']}" : '' ) .
60 ( isset( $parts['path'] ) ? "{$parts['path']}" : '' ) .
61 ( isset( $parts['query'] ) ? "?{$parts['query']}" : '' ) .
62 ( isset( $parts['fragment'] ) ? "#{$parts['fragment']}" : '' );
63 }
64