add_query_arg( string|array $key, string $value, string $url )
Retourne une chaîne de requête URL modifiée.
Paramètres
$key
(string|array)requisPeut être une variable de requête ou un tableau associatif de variables et valeurs.
$value
(string)optionneli $key est une chaîne (variable de requête), alors $value est sa valeur, sinon l'URL à modifier.
$url
(string)optionnelURL à modifier.
Description / Informations supplémentaires
Cette fonction sert à reconstruire une URL et ajouter les variables d'une requête à celle-ci.
Retourne
(string) Nouvelle URL (non-échappée).
Déclaration et structure de la fonction add_query_arg()
add_query_arg()
est déclarée dans le fichier wp-includes/functions.php
à la ligne 1132 :
function add_query_arg( ...$args ) {
if ( is_array( $args[0] ) ) {
if ( count( $args ) < 2 || false === $args[1] ) {
$uri = $_SERVER['REQUEST_URI'];
} else {
$uri = $args[1];
}
} else {
if ( count( $args ) < 3 || false === $args[2] ) {
$uri = $_SERVER['REQUEST_URI'];
} else {
$uri = $args[2];
}
}
$frag = strstr( $uri, '#' );
if ( $frag ) {
$uri = substr( $uri, 0, -strlen( $frag ) );
} else {
$frag = '';
}
if ( 0 === stripos( $uri, 'http://' ) ) {
$protocol = 'http://';
$uri = substr( $uri, 7 );
} elseif ( 0 === stripos( $uri, 'https://' ) ) {
$protocol = 'https://';
$uri = substr( $uri, 8 );
} else {
$protocol = '';
}
if ( str_contains( $uri, '?' ) ) {
list( $base, $query ) = explode( '?', $uri, 2 );
$base .= '?';
} elseif ( $protocol || ! str_contains( $uri, '=' ) ) {
$base = $uri . '?';
$query = '';
} else {
$base = '';
$query = $uri;
}
wp_parse_str( $query, $qs );
$qs = urlencode_deep( $qs ); // This re-URL-encodes things that were already in the query string.
if ( is_array( $args[0] ) ) {
foreach ( $args[0] as $k => $v ) {
$qs[ $k ] = $v;
}
} else {
$qs[ $args[0] ] = $args[1];
}
foreach ( $qs as $k => $v ) {
if ( false === $v ) {
unset( $qs[ $k ] );
}
}
$ret = build_query( $qs );
$ret = trim( $ret, '?' );
$ret = preg_replace( '#=(&|$)#', '$1', $ret );
$ret = $protocol . $base . $ret . $frag;
$ret = rtrim( $ret, '?' );
$ret = str_replace( '?#', '#', $ret );
return $ret;
}
Fonctions utilisées par add_query_arg()
wp_parse_str()
Parse une chaîne en variables pour être stockée dans un tableau.
urlencode_deep()
Navigue à travers un tableau, un objet ou un scalaire et encode les valeurs pour être utilisées dans une URL.
build_query()
Construit une requête URL basée sur un tableau associatif ou indexé.
Où est utilisée la fonction add_query_arg()
dans le CMS WordPress
Exemples
$url = add_query_arg( $param1, $param2, wp_get_referer() );
wp_safe_redirect( $url ); exit;
$url = add_query_arg(
array(
'key1' => 'value1',
'key2' => 'value2',
...
),
wp_get_referer()
);
wp_safe_redirect( $url ); exit;
Sources
Codex WordPress : add_query_arg()
Autres fonctions dans le même fichier : wp-includes/functions.php