Attention Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

Function Reference/add query arg


Retrieve a modified URL (with) query string.

You can rebuild the URL and append a new query variable to the URL query by using this function. You can also retrieve the full URL with query data.

Adding a single key & value or an associative array. Setting a key value to false removes it from the query. Omitting the old query or the uri (second or third parameter) uses the $_SERVER value.


// Parameters as separate arguments
add_query_arg$param1$param2$old_query_or_uri );

// Parameters as array of key => value pairs
add_query_arg( array('key1' => 'value1', ...), $old_query_or_uri );


(integer|string|array) (required) Either newkey or an associative array.
Default: None
(integer|string|boolean) (optional) Either newvalue (or the old query or the uri if first parameter is an associative array).
Default: None
(string|boolean) (optional) The old query or the uri.

Return Values

New URL query string.


Assuming we're at the WordPress URL "http://blog.example.com/client/?s=word"...

// This would output '/client/?s=word&foo=bar'
echo add_query_arg( 'foo', 'bar' );

// This would output '/client/?s=word&foo=bar&baz=tiny'
$arr_params = array( 'foo' => 'bar', 'baz' => 'tiny' );
echo add_query_arg( $arr_params );

More often than not you'll probably find yourself creating URLs using the following method within the page you're currently on. In these cases you can use the URL you want to affect as the last parameter.

// This would output 'http://blog.example.com/2009/04/16/?hello=world'
echo add_query_arg( 'hello', 'world', 'http://blog.example.com/2009/04/16/' );

Since get_permalink() returns a full URL, you could use that when you want to add variables to a post's page.

// This would output whatever the URL to post ID 9 is, with 'hello=there' appended with either ? or &, depending on what's needed
echo add_query_arg( 'hello', 'there', get_permalink(9) );

Removing values and setting via an associative array:

$query = 'http://example.com/link?foo=bar';
$new_query = add_query_arg( array('foo' => false, 'baz' => 'qux'), $query );
// result: http://example.com/link?baz=qux


Change Log

  • 3.5.0: Simplify protocol stripping in add_query_arg() by avoiding a regular expression.
  • Since: 1.5.0

Source File

add_query_arg() is located in wp-includes/functions.php.



See also index of Function Reference and index of Template Tags.