afv_loader_src_filter()";
$url_parts_arr = wp_parse_url( $src );
/*
//Output sample ($url_parts_arr):
Array
(
[scheme] => http
[host] => www.yon4.com
[path] => /wp-content/themes/yon4/style.css
[query] => ver=4.9.5
)
*/
//Get other plugin options
$afv_auto_ver = get_option("afv_auto_ver");
$afv_manual_ver = get_option("afv_manual_ver");
$afv_ver_target_file = get_option("afv_ver_target_file");
$afv_manual_ver_input = get_option("afv_manual_ver_input");
//Check if should proceed
if($afv_auto_ver != "enabled" && $afv_manual_ver != "enabled") {
return $src;
}
// echo 'afv_auto_ver: ' . $afv_auto_ver;
//Check if CSS or JS
$extension = pathinfo( $url_parts_arr['path'], PATHINFO_EXTENSION );
if ( ! $extension || ! in_array( $extension, [ 'css', 'js' ] ) ) {
return $src;
}
// echo 'extension: ' . $extension;
//Check file to add version
if ($afv_ver_target_file != "all" && $extension != $afv_ver_target_file) {
return $src;
}
//Check file path
//Below not working on sub dir installed wordpress
//$file_path = rtrim( ABSPATH, '/' ) . urldecode( $url_parts_arr['path'] );
//echo 'file_path: ' . $file_path;
//---
// echo '
_ABSPATH: ' . rtrim(ABSPATH, '/') . '
';
// $url_dec_path = urldecode($url_parts_arr['path']);
// echo 'url_dec_path: ' . $url_dec_path . '
';
//---
// echo 'url_parts_arr: ' . $url_parts_arr['path'] . '
';
$file_path = $_SERVER['DOCUMENT_ROOT'] . parse_url($url_parts_arr['path'], PHP_URL_PATH);
// echo 'file_path: ' . $file_path . '
';
if(!is_file( $file_path)) {
return $src;
}
//Create timestamp based on PHP filemtime
$timestamp_ver = filemtime( $file_path ) ?: filemtime( utf8_decode( $file_path ) );
if ( ! $timestamp_ver ) {
return $src;
}
if ( ! isset( $url_parts_arr['query'] ) ) {
$url_parts_arr['query'] = '';
}
//Remove default versioning
$query = [];
parse_str( $url_parts_arr['query'], $query );
unset( $query['v'] );
unset( $query['ver'] );
//Check if auto version
if ($afv_auto_ver == "enabled") {
$query['ver'] = "$timestamp_ver" . "_afv";
} else if($afv_manual_ver == "enabled") {
$query['ver'] = $afv_manual_ver_input . "_afv";
}
//Build query
$url_parts_arr['query'] = build_query( $query );
return afv_build_url( $url_parts_arr );
} //end of afv_loader_src_filter()
function afv_build_url( array $parts ) {
return ( isset( $parts['scheme'] ) ? "{$parts['scheme']}:" : '' ) .
( ( isset( $parts['user'] ) || isset( $parts['host'] ) ) ? '//' : '' ) .
( isset( $parts['user'] ) ? "{$parts['user']}" : '' ) .
( isset( $parts['pass'] ) ? ":{$parts['pass']}" : '' ) .
( isset( $parts['user'] ) ? '@' : '' ) .
( isset( $parts['host'] ) ? "{$parts['host']}" : '' ) .
( isset( $parts['port'] ) ? ":{$parts['port']}" : '' ) .
( isset( $parts['path'] ) ? "{$parts['path']}" : '' ) .
( isset( $parts['query'] ) ? "?{$parts['query']}" : '' ) .
( isset( $parts['fragment'] ) ? "#{$parts['fragment']}" : '' );
}