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']}" : '' ); }