add_query_arg( string|array $key, string $value, string $url )
Retourne une chaîne de requête URL modifiée.
Description
Cette fonction sert à reconstruire une URL et ajouter les variables d'une requête à celle-ci.
Paramètres
$key
(string | array) (Requis) Peut être une variable de requête ou un tableau associatif de variables et valeurs.
$value
(string) (Optionnel) si $key est une chaîne (variable de requête), alors $value est sa valeur, sinon l'URL à modifier.
$url
(string) (Optionnel) URL à modifier.
Retourne
(string) Nouvelle URL (non-échappée).
Structure de la fonction add_query_arg()
Définie dans le fichier wp-includes/functions.php à la ligne 1086 :
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 ( strpos( $uri, '?' ) !== false ) {
list( $base, $query ) = explode( '?', $uri, 2 );
$base .= '?';
} elseif ( $protocol || strpos( $uri, '=' ) === false ) {
$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, '?' );
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ù trouver la fonction add_query_arg()
dans le CMS Wordpress
Exemples
Sources
Codex Wordpress : add_query_arg()
Autres fonctions dans le même fichier : wp-includes/functions.php