当前浏览:首页 / WordPress函数 / add_query_arg()

add_query_arg( $args ): string

检索修改后的URL查询字符串

addmore...

arg

querymore...


描述

您可以使用此函数重新生成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)攻击漏洞。


参数

$keystring|array必填
查询变量键或查询变量的关联数组。
$valuestring可选
查询变量值或要操作的URL。
$urlstring可选
要操作的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开始引入

使用示例

  • 示例1

    假设我们在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 ) );
  • 示例2

    安全地将用户重定向到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' ) ) );
  • 示例3

    因为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 ) ) );
  • 示例4

    通常,您可能会发现自己在当前页面中使用以下方法创建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/' ) );
  • 示例5

    通过关联数组删除值和设置:

    $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
  • 示例6

    如果查询字符串值以==结尾,则会去掉一个=

    add_query_arg( array( 'something' => 'blabla==' ), 'https://www.google.com' );

    结果将为
    https://www.google.com?something=blabla=
    但应为
    https://www.google.com?something=blabla==

  • 示例7

    使用add_query_arg获取当前总URL的方法

    home_url( add_query_arg( null, null ));