
如何在WordPress中使用Bootstrap图标?
add_query_arg ( $args )
检索一个修改过的URL查询字符串。
你可以通过使用这个函数重建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)攻击的漏洞。
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, '?' ); $ret = str_replace( '?#', '#', $ret ); return $ret; }