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

Avec 3 paramètres :
$url = add_query_arg( $param1, $param2, wp_get_referer() );
wp_safe_redirect( $url ); exit;
Avec 2 paramètres :
$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

Retour