@@ -417,19 +417,32 @@ public function do_item( $handle, $group = false ) {
417417 $ src = $ this ->base_url . $ src ;
418418 }
419419
420- $ query_args = array () ;
420+ $ ver_to_add = '' ;
421421 if ( empty ( $ obj ->ver ) && null !== $ obj ->ver && is_string ( $ this ->default_version ) ) {
422- $ query_args [ ' ver ' ] = $ this ->default_version ;
422+ $ ver_to_add = $ this ->default_version ;
423423 } elseif ( is_scalar ( $ obj ->ver ) ) {
424- $ query_args [ ' ver ' ] = (string ) $ obj ->ver ;
424+ $ ver_to_add = (string ) $ obj ->ver ;
425425 }
426- if ( isset ( $ this ->args [ $ handle ] ) ) {
427- parse_str ( $ this ->args [ $ handle ], $ parsed_args );
428- if ( $ parsed_args ) {
429- $ query_args = array_merge ( $ query_args , $ parsed_args );
426+
427+ $ added_args = (string ) ( $ this ->args [ $ handle ] ?? '' );
428+
429+ if ( '' !== $ ver_to_add || '' !== $ added_args ) {
430+ $ fragment = strstr ( $ src , '# ' );
431+ if ( false !== $ fragment ) {
432+ $ src = substr ( $ src , 0 , -strlen ( $ fragment ) );
433+ }
434+
435+ if ( '' !== $ ver_to_add ) {
436+ $ src .= ( str_contains ( $ src , '? ' ) ? '& ' : '? ' ) . 'ver= ' . rawurlencode ( $ ver_to_add );
437+ }
438+ if ( '' !== $ added_args ) {
439+ $ src .= ( str_contains ( $ src , '? ' ) ? '& ' : '? ' ) . $ added_args ;
440+ }
441+
442+ if ( false !== $ fragment ) {
443+ $ src .= $ fragment ;
430444 }
431445 }
432- $ src = add_query_arg ( rawurlencode_deep ( $ query_args ), $ src );
433446
434447 /** This filter is documented in wp-includes/class-wp-scripts.php */
435448 $ src = esc_url_raw ( apply_filters ( 'script_loader_src ' , $ src , $ handle ) );
0 commit comments