Функция remove_query_arg()
в WordPress предназначена для удаления одного или нескольких параметров из строки запроса URL. Это может быть полезно, когда вам нужно создать чистый URL без определенных параметров, например, после выполнения каких-либо действий, которые требуют временных значений.
remove_query_arg( string|string[] $key, false|string $query = false ): string
Функция удаляет указанные ключи из строки запроса и возвращает новый URL. При этом стоит помнить, что возвращаемое значение функции не экранируется по умолчанию, что делает его потенциально уязвимым к атакам XSS. Поэтому рекомендуется использовать функцию esc_url()
для экранирования выходных данных.
Параметры
- $key (строка|массив, обязательный) — один или несколько параметров запроса, которые необходимо удалить.
- $query (строка|логический, необязательный) — URL, из которого будут удалены указанные параметры. По умолчанию используется текущий запрос (
$_SERVER['REQUEST_URI']
).
Возвращаемое значение
- string — новый URL без удаленных параметров.
Пример 1: Удаление нескольких параметров запроса из текущего URL
Предположим, что у нас есть URL с несколькими параметрами, и нам нужно удалить определенные параметры после их обработки.
// Удаляем параметры 'remove_recommend' и 'post_id' из текущего URL
$page_url = remove_query_arg(array('remove_recommend', 'post_id'));
// Выводим очищенный URL
echo esc_url($page_url);
Результат: Этот код вернет текущий URL без указанных параметров.
Пример 2: Удаление параметров из указанного URL
Если у вас есть URL, который вы хотите очистить от определенных параметров, вы можете указать этот URL в качестве второго параметра.
$url = 'http://blog.example.com/2024/?name=john&age=30&location=usa';
// Удаляем параметр 'name' из указанного URL
$cleaned_url = remove_query_arg('name', $url);
// Выводим результат
echo esc_url($cleaned_url);
//> http://blog.example.com/2024/?age=30&location=usa
Результат: Теперь URL больше не содержит параметра name
.
Пример 3: Удаление всех параметров запроса
Вы также можете удалить все параметры запроса, указав их в массиве.
$complex_url = 'http://example.com/shop/?category=books&sort=price&filter=new';
$parameters_to_remove = array('category', 'sort', 'filter');
// Удаляем все указанные параметры
$clean_url = remove_query_arg($parameters_to_remove, $complex_url);
// Выводим результат
echo esc_url($clean_url);
//> http://example.com/shop/
Результат: URL будет очищен от всех указанных параметров, оставив только базовый путь.
Пример 4: Работа с относительными URL
Функция также работает с относительными URL. Вот пример:
$relative_url = '/products/?item=123&source=ad';
$cleaned_relative_url = remove_query_arg('source', $relative_url);
// Выводим результат
echo esc_url($cleaned_relative_url);
//> /products/?item=123
Результат: Параметр source
будет удален, оставляя только item
.
Заключение
Функция remove_query_arg()
является мощным инструментом для манипуляции с URL в WordPress. Она позволяет легко управлять параметрами запроса, очищая их для повышения безопасности и удобства пользователей. Не забывайте экранировать выводимые URL, чтобы предотвратить возможные уязвимости.