Удаление параметров из URL с помощью функции remove_query_arg()
Функция remove_query_arg()
в WordPress используется для удале��ия одного или нескольких параметров из строки запроса (query string) в URL. Давайте разберем, как она работает и как ее можно использовать.
Важно знать
- Возвращаемое значение функции
remove_query_arg()
по умолчанию не экранируется. Это значит, что перед выводом ссылки стоит использовать функциюesc_url()
, чтобы защититься от уязвимостей, таких как XSS-атаки.
Производительность
- Использование
remove_query_arg()
:- 1 раз — 0.000055 секунды (очень быстро)
- 50,000 раз — 0.19 секунды (также быстро)
- PHP: 7.1.5, WP: 4.8.2
Возвращаемое значение
Функция возвращает строку — новый URL с удаленными параметрами.
Как использовать
Функция remove_query_arg
принимает два параметра:
remove_query_arg( $key, $query );
- $key (обязательный параметр, строка или массив строк) — ключ(и) запроса, которые нужно удалить.
- $query (необязательный параметр, по умолчанию
false
) — URL, из которого нужно удалить параметры. Если не указано, используется текущий URL.
Примеры использования
Пример 1: Удаление параметров из текущего URL
Предположим, вы находитесь на странице WordPress с URL:
http://www.example.com/client/?details=value1&type=value2&date=value3
Нам нужно удалить параметры details
, type
и date
. Вот как это можно сделать:
$arr_params = array( 'details', 'type', 'date' );
echo esc_url( remove_query_arg( $arr_params ) );
// вывод: http://www.example.com/client/
Обратите внимание на использование функции esc_url()
перед выводом ссылки.
Пример 2: Удаление нескольких параметров из URL
Допустим, мы передаем параметры запроса remove_recomend
и post_id
, обрабатываем их, а затем нам нужна ссылка без этих параметров:
// используем $_SERVER['REQUEST_URI'] и переданные параметры запроса
// удаляем ненужные параметры
$page_url = remove_query_arg( [ 'remove_recomend', 'post_id' ] );
// используем переменную $page_url без параметров
echo esc_url( $page_url );
Пример 3: Удаление параметров из указанного URL
Вот еще один пример, когда мы хотим удалить параметр hello
из заданного URL:
$url = 'http://blog.example.com/2009/?hello=world&foo=bar';
echo remove_query_arg( 'hello', $url );
// вывод: http://blog.example.com/2009/?foo=bar
Код функции remove_query_arg()
Вот как выглядит реализация функции remove_query_arg()
в WordPress:
function remove_query_arg( $key, $query = false ) {
if ( is_array( $key ) ) { // Удаляем несколько ключей.
foreach ( $key as $k ) {
$query = add_query_arg( $k, false, $query );
}
return $query;
}
return add_query_arg( $key, false, $query );
}
Заключение
Функция remove_query_arg()
— это мощный инструме��т для работы с URL в WordPress. Она позволяет легко управлять параметрами запроса и поддерживать ваши ссылки чистыми и безопасными. Используйте её с умом, и ваш сайт станет более безопасным и функциональным!