Skip to content

Commit 74375f7

Browse files
committed
Fix handling of passing args to dependency URL via enqueue
1 parent fd37e37 commit 74375f7

2 files changed

Lines changed: 15 additions & 3 deletions

File tree

src/wp-includes/class-wp-scripts.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -412,9 +412,17 @@ public function do_item( $handle, $group = false ) {
412412
$src = $this->base_url . $src;
413413
}
414414

415-
if ( ! empty( $ver ) ) {
416-
$src = add_query_arg( 'ver', $ver, $src );
415+
$query_args = array();
416+
if ( null !== $obj->ver ) {
417+
$query_args['ver'] = false === $obj->ver ? $this->default_version : $obj->ver;
417418
}
419+
if ( isset( $this->args[ $handle ] ) ) {
420+
parse_str( $this->args[ $handle ], $parsed_args );
421+
if ( $parsed_args ) {
422+
$query_args = array_merge( $query_args, $parsed_args );
423+
}
424+
}
425+
$src = add_query_arg( $query_args, $src );
418426

419427
/** This filter is documented in wp-includes/class-wp-scripts.php */
420428
$src = esc_url_raw( apply_filters( 'script_loader_src', $src, $handle ) );

tests/phpunit/tests/dependencies/scripts.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,17 @@ public function test_wp_enqueue_script() {
7979

8080
wp_enqueue_script( 'no-deps-no-version', 'example.com', array() );
8181
wp_enqueue_script( 'empty-deps-no-version', 'example.com' );
82-
wp_enqueue_script( 'empty-deps-version', 'example.com', array(), 1.2 );
82+
wp_enqueue_script( 'empty-deps-version', 'example.com', array(), '1.2' );
8383
wp_enqueue_script( 'empty-deps-null-version', 'example.com', array(), null );
84+
wp_enqueue_script( 'empty-deps-arg-in-handle-with-ver?arg1=foo&arg2=bar', 'https://example.com/test.js', array(), '2.0' );
85+
wp_enqueue_script( 'empty-deps-arg-in-handle-without-ver?arg1=foo&arg2=bar', 'https://example.com/test.js', array(), null );
8486

8587
$expected = "<script type='text/javascript' src='http://example.com?ver={$wp_version}' id='no-deps-no-version-js'></script>\n";
8688
$expected .= "<script type='text/javascript' src='http://example.com?ver={$wp_version}' id='empty-deps-no-version-js'></script>\n";
8789
$expected .= "<script type='text/javascript' src='http://example.com?ver=1.2' id='empty-deps-version-js'></script>\n";
8890
$expected .= "<script type='text/javascript' src='http://example.com' id='empty-deps-null-version-js'></script>\n";
91+
$expected .= "<script type='text/javascript' src='https://example.com/test.js?ver=2.0&amp;arg1=foo&amp;arg2=bar' id='empty-deps-arg-in-handle-with-ver-js'></script>\n";
92+
$expected .= "<script type='text/javascript' src='https://example.com/test.js?arg1=foo&amp;arg2=bar' id='empty-deps-arg-in-handle-without-ver-js'></script>\n";
8993

9094
$this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
9195

0 commit comments

Comments
 (0)