Run rawurlencode_deep() through the parsed query in canonical. (Introduces rawurlencode_deep().) props toppa for the initial patch. fixes #20143.

git-svn-id: http://svn.automattic.com/wordpress/trunk@20611 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
nacin 2012-04-27 15:40:00 +00:00
parent ace51e5f6d
commit 3f51df65e0
2 changed files with 13 additions and 3 deletions

View File

@ -301,7 +301,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
unset( $_parsed_query['name'] ); unset( $_parsed_query['name'] );
} }
$_parsed_query = array_map( 'rawurlencode', $_parsed_query ); $_parsed_query = rawurlencode_deep( $_parsed_query );
$redirect_url = add_query_arg( $_parsed_query, $redirect_url ); $redirect_url = add_query_arg( $_parsed_query, $redirect_url );
} }

View File

@ -1339,8 +1339,6 @@ function stripslashes_deep($value) {
/** /**
* Navigates through an array and encodes the values to be used in a URL. * Navigates through an array and encodes the values to be used in a URL.
* *
* Uses a callback to pass the value of the array back to the function as a
* string.
* *
* @since 2.2.0 * @since 2.2.0
* *
@ -1352,6 +1350,18 @@ function urlencode_deep($value) {
return $value; return $value;
} }
/**
* Navigates through an array and raw encodes the values to be used in a URL.
*
* @since 3.4.0
*
* @param array|string $value The array or string to be encoded.
* @return array|string $value The encoded array (or string from the callback).
*/
function rawurlencode_deep( $value ) {
return is_array( $value ) ? array_map( 'rawurlencode_deep', $value ) : rawurlencode( $value );
}
/** /**
* Converts email addresses characters to HTML entities to block spam bots. * Converts email addresses characters to HTML entities to block spam bots.
* *