描述
您可以使用此函数重新生成URL并将查询变量附加到URL查询。
此函数有两种使用方法,单个键和值或关联数组。
使用单个键和值:
add_query_arg( 'key', 'value', 'http://example.com' );
使用关联数组:
add_query_arg( array( 'key1' => 'value1', 'key2' => 'value2', ), 'http://example.com' );
在任一使用中省略URL都会导致使用当前URL($_SERVER['REQUEST_URI']
的值)。
值应使用urlencode()或rawurlencode()进行适当编码。
将任何查询变量的值设置为布尔false将删除键(请参见remove_query_arg())。
要点:默认情况下,add_query_arg()的返回值不会转义。应使用esc_url()或类似代码延迟转义输出,以帮助防止跨站点脚本(XSS)攻击漏洞。
参数
$key
string|array必填-
查询变量键或查询变量的关联数组。
$value
string可选-
查询变量值或要操作的URL。
$url
string可选-
要操作的URL。
返回
string 新URL查询字符串(未转义)。
更多信息
用法
// 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', 'key2' => 'value2', ... ), $old_query_or_uri );
源码
更新日志
版本 | 描述 |
---|---|
5.3.0 | 通过将...$args 添加到函数签名,使现有的和已记录的参数正规化。 |
1.5.0 | 开始引入 |
使用示例
假设我们在WordPress URL “http://blog.example.com/client/?s=word“… 请注意在输出链接之前使用
esc_url()
。这是必要的,因为此函数不转义URL,如果输出不转义,则会使页面容易受到XSS脚本的攻击。// This would output '/client/?s=word&foo=bar' echo esc_url( add_query_arg( 'foo', 'bar' ) ); // This would output '/client/?s=word&foo=bar&baz=tiny' $arr_params = array( 'foo' => 'bar', 'baz' => 'tiny' ); echo esc_url( add_query_arg( $arr_params ) );
安全地将用户重定向到
plugins.php
内的自定义页面// Redirect to Welcome Page. // Redirects to your-domain.com/wp-admin/plugin.php?page=your_plugin_page. wp_safe_redirect( add_query_arg( array( 'page' => 'your_plugin_page' ), admin_url( 'plugins.php' ) ) );
因为
get_permalink()
返回完整的URL,所以当您想向文章页面添加变量时,可以使用它。/* * This would output whatever the URL to post ID 9 is, with 'hello=there' * appended with either ? or &, depending on what's needed. */ echo esc_url( add_query_arg( 'hello', 'there', get_permalink( 9 ) ) );
通常,您可能会发现自己在当前页面中使用以下方法创建URL。在这些情况下,您可以将要影响的URL用作最后一个参数。此处不需要使用
esc_url()
,因为已知该值是安全的。// This would output 'http://blog.example.com/2009/04/16/?hello=world' echo esc_url( add_query_arg( 'hello', 'world', 'http://blog.example.com/2009/04/16/' ) );
通过关联数组删除值和设置:
$query = 'http://example.com/link?foo=bar'; $new_query = add_query_arg( array( 'foo' => false, 'baz' => 'qux' ), $query ); print( $new_query ); // http://example.com/link?baz=qux
如果查询字符串值以
==
结尾,则会去掉一个=
。add_query_arg( array( 'something' => 'blabla==' ), 'https://www.google.com' );
结果将为
https://www.google.com?something=blabla=
但应为https://www.google.com?something=blabla==
使用
add_query_arg
获取当前总URL的方法home_url( add_query_arg( null, null ));