mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-05-25 13:44:30 +00:00
HTTP API: Remove empty ? when only anchor remains in add_query_arg().
If after processing through `add_query_arg()` a `?#` remains, this commit removes the unnecessary and unused `?` character as there are no query args in the URL. Includes tests. Follow-up to [1823], [5193], [5999], [6005]. Props benjaminanakenam, sabernhardt, costdev, hellofromTonya. Fixes #44499. git-svn-id: https://develop.svn.wordpress.org/trunk@52187 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -1169,6 +1169,7 @@ function add_query_arg( ...$args ) {
|
||||
$ret = preg_replace( '#=(&|$)#', '$1', $ret );
|
||||
$ret = $protocol . $base . $ret . $frag;
|
||||
$ret = rtrim( $ret, '?' );
|
||||
$ret = str_replace( '?#', '#', $ret );
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -665,6 +665,62 @@ class Tests_Functions extends WP_UnitTestCase {
|
||||
$this->assertSame( 'foo=bar&1=2', $url );
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that add_query_arg removes the question mark when
|
||||
* a parameter is set to false.
|
||||
*
|
||||
* @dataProvider data_add_query_arg_removes_question_mark
|
||||
*
|
||||
* @ticket 44499
|
||||
* @group add_query_arg
|
||||
*
|
||||
* @covers ::add_query_arg
|
||||
*
|
||||
* @param string $url Url to test.
|
||||
* @param string $expected Expected URL.
|
||||
*/
|
||||
public function test_add_query_arg_removes_question_mark( $url, $expected, $key = 'param', $value = false ) {
|
||||
$this->assertSame( $expected, add_query_arg( $key, $value, $url ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Data provider.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function data_add_query_arg_removes_question_mark() {
|
||||
return array(
|
||||
'anchor' => array(
|
||||
'url' => 'http://example.org?#anchor',
|
||||
'expected' => 'http://example.org#anchor',
|
||||
),
|
||||
'/ then anchor' => array(
|
||||
'url' => 'http://example.org/?#anchor',
|
||||
'expected' => 'http://example.org/#anchor',
|
||||
),
|
||||
'invalid query param and anchor' => array(
|
||||
'url' => 'http://example.org?param=value#anchor',
|
||||
'expected' => 'http://example.org#anchor',
|
||||
),
|
||||
'/ then invalid query param and anchor' => array(
|
||||
'url' => 'http://example.org/?param=value#anchor',
|
||||
'expected' => 'http://example.org/#anchor',
|
||||
),
|
||||
'?#anchor when adding valid key/value args' => array(
|
||||
'url' => 'http://example.org?#anchor',
|
||||
'expected' => 'http://example.org?foo=bar#anchor',
|
||||
'key' => 'foo',
|
||||
'value' => 'bar',
|
||||
),
|
||||
'/?#anchor when adding valid key/value args' => array(
|
||||
'url' => 'http://example.org/?#anchor',
|
||||
'expected' => 'http://example.org/?foo=bar#anchor',
|
||||
'key' => 'foo',
|
||||
'value' => 'bar',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 21594
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user