Skip to content
29 changes: 21 additions & 8 deletions src/wp-includes/class-wp-scripts.php
Original file line number Diff line number Diff line change
Expand Up @@ -417,19 +417,32 @@ public function do_item( $handle, $group = false ) {
$src = $this->base_url . $src;
}

$query_args = array();
$ver_to_add = '';
if ( empty( $obj->ver ) && null !== $obj->ver && is_string( $this->default_version ) ) {
$query_args['ver'] = $this->default_version;
$ver_to_add = $this->default_version;
} elseif ( is_scalar( $obj->ver ) ) {
$query_args['ver'] = (string) $obj->ver;
$ver_to_add = (string) $obj->ver;
}
if ( isset( $this->args[ $handle ] ) ) {
parse_str( $this->args[ $handle ], $parsed_args );
if ( $parsed_args ) {
$query_args = array_merge( $query_args, $parsed_args );

$added_args = (string) ( $this->args[ $handle ] ?? '' );

if ( '' !== $ver_to_add || '' !== $added_args ) {
$fragment = strstr( $src, '#' );
if ( false !== $fragment ) {
$src = substr( $src, 0, -strlen( $fragment ) );
}

if ( '' !== $ver_to_add ) {
$src .= ( str_contains( $src, '?' ) ? '&' : '?' ) . 'ver=' . rawurlencode( $ver_to_add );
}
if ( '' !== $added_args ) {
$src .= ( str_contains( $src, '?' ) ? '&' : '?' ) . $added_args;
}

if ( false !== $fragment ) {
$src .= $fragment;
}
}
$src = add_query_arg( rawurlencode_deep( $query_args ), $src );

/** This filter is documented in wp-includes/class-wp-scripts.php */
$src = esc_url_raw( apply_filters( 'script_loader_src', $src, $handle ) );
Expand Down
29 changes: 21 additions & 8 deletions src/wp-includes/class-wp-styles.php
Original file line number Diff line number Diff line change
Expand Up @@ -407,19 +407,32 @@ public function _css_href( $src, $ver, $handle ) {
$src = $this->base_url . $src;
}

$query_args = array();
$ver_to_add = '';
if ( empty( $ver ) && null !== $ver && is_string( $this->default_version ) ) {
$query_args['ver'] = $this->default_version;
$ver_to_add = $this->default_version;
} elseif ( is_scalar( $ver ) ) {
$query_args['ver'] = (string) $ver;
$ver_to_add = (string) $ver;
}
if ( isset( $this->args[ $handle ] ) ) {
parse_str( $this->args[ $handle ], $parsed_args );
if ( $parsed_args ) {
$query_args = array_merge( $query_args, $parsed_args );

$added_args = (string) ( $this->args[ $handle ] ?? '' );

if ( '' !== $ver_to_add || '' !== $added_args ) {
$fragment = strstr( $src, '#' );
if ( false !== $fragment ) {
$src = substr( $src, 0, -strlen( $fragment ) );
}

if ( '' !== $ver_to_add ) {
$src .= ( str_contains( $src, '?' ) ? '&' : '?' ) . 'ver=' . rawurlencode( $ver_to_add );
}
if ( '' !== $added_args ) {
$src .= ( str_contains( $src, '?' ) ? '&' : '?' ) . $added_args;
}

if ( false !== $fragment ) {
$src .= $fragment;
}
}
$src = add_query_arg( rawurlencode_deep( $query_args ), $src );

/**
* Filters an enqueued style's fully-qualified URL.
Expand Down
Loading
Loading