функция since 1.5.0

add_query_arg()

Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.

Сигнатура

add_query_arg( $args ): string

Описание

С помощью этой функции можно перестроить 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).

Оригинал (английский)

You can rebuild the URL and append query variables to the URL query by using this function.
There are two ways to use this function; either a single key and value, or an associative array.

Using a single key and value:

add_query_arg( 'key', 'value', 'http://example.com' );

Using an associative array:

add_query_arg( array(
    'key1' => 'value1',
    'key2' => 'value2',
), 'http://example.com' );

Omitting the URL from either use results in the current URL being used (the value of $_SERVER['REQUEST_URI']).

Values are expected to be encoded appropriately with urlencode() or rawurlencode().

Setting any query variable’s value to boolean false removes the key (see remove_query_arg() ).

Important: The return value of add_query_arg() is not escaped by default. Output should be late-escaped with esc_url() or similar to help prevent vulnerability to cross-site scripting (XSS) attacks.

Параметры

$key string|array обязательный
Либо ключ переменной запроса, либо ассоциативный массив переменных запроса.
$value string необязательный
Либо значение переменной запроса, либо URL, над которым выполняется действие.
$url string необязательный
URL, над которым выполняется действие.

Возвращаемое значение

string

Исходный код

wp-includes/functions.php:1139

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 ( str_contains( $uri, '?' ) ) {
		list( $base, $query ) = explode( '?', $uri, 2 );
		$base                .= '?';
	} elseif ( $protocol || ! str_contains( $uri, '=' ) ) {
		$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;
}

История изменений

ВерсияОписание
5.3.0 Formalized the existing and already documented parameters by adding ...$args to the function signature.
1.5.0 Introduced.

Что будем искать? Например,Продвижение

Этот сайт использует куки-файлы. Оставаясь на сайте, Вы соглашаетесь на их использование. Для получения дополнительной информации, пожалуйста, ознакомьтесь с политикой в отношении персональных данных.