diff --git a/packages/url/src/get-query-string.js b/packages/url/src/get-query-string.js index e1437f4e78a13..8624ce5c6c8b9 100644 --- a/packages/url/src/get-query-string.js +++ b/packages/url/src/get-query-string.js @@ -13,7 +13,7 @@ export function getQueryString( url ) { let query; try { - query = new URL( url ).search.substring( 1 ); + query = new URL( url, 'http://example.com' ).search.substring( 1 ); } catch ( error ) {} if ( query ) { diff --git a/packages/url/src/test/index.test.js b/packages/url/src/test/index.test.js index ddb603ba3fa76..d8a98c98a04b4 100644 --- a/packages/url/src/test/index.test.js +++ b/packages/url/src/test/index.test.js @@ -287,6 +287,14 @@ describe( 'getQueryString', () => { ).toBe( 'foo=bar&foo=baz?test' ); } ); + it( 'returns the query string of a path', () => { + expect( getQueryString( '/wp-json/wp/v2/posts?type=page' ) ).toBe( + 'type=page' + ); + + expect( getQueryString( '/wp-json/wp/v2/posts' ) ).toBeUndefined(); + } ); + it( 'returns undefined when the provided does not contain a url query string', () => { expect( getQueryString( '' ) ).toBeUndefined(); expect(