[28785] introduced a bug, where encoded query arguments were decoded by parse_str() inside of wp_parse_str() but never re-encoded later on.

This encodes them, adds unit test.

Props obenland.
Fixes #29636.


git-svn-id: https://develop.svn.wordpress.org/trunk@30133 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Scott Taylor 2014-11-01 00:53:26 +00:00
parent ef23aee2a6
commit ff4f545fc9
2 changed files with 11 additions and 7 deletions

View File

@ -2475,6 +2475,7 @@ function paginate_links( $args = '' ) {
if ( isset( $url_parts[1] ) ) {
wp_parse_str( $url_parts[1], $query_args );
$query_args = urlencode_deep( $query_args );
}
$pagenum_link = remove_query_arg( array_keys( $query_args ), $pagenum_link );

View File

@ -188,7 +188,10 @@ EXPECTED;
}
function add_query_arg( $url ) {
return add_query_arg( array( 'foo' => 'bar' ), $url );
return add_query_arg( array(
'foo' => 'bar',
's' => 'search+term',
), $url );
}
/**
@ -208,13 +211,13 @@ EXPECTED;
$document = new DOMDocument();
$document->preserveWhiteSpace = false;
// All links should have foo=bar arguments:
// All links should have foo=bar arguments and be escaped:
$data = array(
0 => home_url( '/?foo=bar' ),
1 => home_url( '/?foo=bar' ),
3 => home_url( '/?paged=3&foo=bar' ),
5 => home_url( '/?paged=5&foo=bar' ),
6 => home_url( '/?paged=3&foo=bar' ),
0 => home_url( '/?foo=bar&s=search+term' ),
1 => home_url( '/?foo=bar&s=search+term' ),
3 => home_url( '/?paged=3&foo=bar&s=search+term' ),
5 => home_url( '/?paged=5&foo=bar&s=search+term' ),
6 => home_url( '/?paged=3&foo=bar&s=search+term' ),
);
foreach ( $data as $index => $expected_href ) {