Как добавить динамические параметры в URL в WordPress

В разработке на WordPress часто возникает задача передать параметры через URL и использовать их в шаблонах или функциях плагина. Например, это полезно для фильтрации контента, персонализации страниц, интеграции с внешними сервисами или сбора аналитики. В этой статье разберём, как правильно добавить и обработать динамические параметры в URL, не ломая структуру сайта и не ухудшая SEO.

Почему важно правильно работать с параметрами URL в WordPress

WordPress по умолчанию обрабатывает некоторые параметры в URL, например, ?p=123 для постов или ?page_id=45 для страниц. Но если нужно добавить свои параметры, например, ?ref=partner1 или ?filter=color_red, то надо понимать, как WordPress их воспринимает и как безопасно извлечь данные из них.

Некорректная работа с параметрами может привести к ошибкам 404, конфликтам с ЧПУ (Человекопонятными Урлами), проблемам с кэшированием или даже уязвимостям в безопасности. Поэтому задача состоит в том, чтобы добавить параметры в URL так, чтобы WordPress их корректно принимал и вы могли использовать в теме или плагине.

Добавление собственных параметров в URL: два подхода

1. Использование GET-параметров

Самый простой способ — добавить параметры через стандартный синтаксис GET-запроса, например:

https://example.com/page/?ref=partner1&campaign=spring

Чтобы получить эти параметры в PHP, достаточно обратиться к суперглобальному массиву $_GET:

function wpdir_get_url_parameters() {
    $ref = isset($_GET['ref']) ? sanitize_text_field($_GET['ref']) : '';
    $campaign = isset($_GET['campaign']) ? sanitize_text_field($_GET['campaign']) : '';
    // Используйте параметры по назначению
}
add_action('template_redirect', 'wpdir_get_url_parameters');

Здесь важно использовать функции очистки данных, например sanitize_text_field, чтобы избежать XSS-атак и других проблем.

Однако такой подход не всегда удобен, если на сайте включены ЧПУ, и хочется более «чистые» URL без знаков вопроса.

2. Добавление пользовательских пермалинков с параметрами

Для создания более красивых URL с параметрами можно использовать перезапись правил (rewrite rules) и добавить свои переменные запроса (query vars).

Пример: хотим, чтобы URL выглядел так:

https://example.com/products/color/red/

Для этого нужно добавить новый query var и правило перезаписи:

function wpdir_add_query_vars($vars) {
    $vars[] = 'color';
    return $vars;
}
add_filter('query_vars', 'wpdir_add_query_vars');

function wpdir_add_rewrite_rules() {
    add_rewrite_rule('^products/color/([^/]*)/?','index.php?post_type=product&color=$matches[1]','top');
}
add_action('init', 'wpdir_add_rewrite_rules');

После этого WordPress начнёт распознавать параметр color из URL и передавать его в запрос.

Важно после добавления правил сделать сброс пермалинков через админку (Настройки > Постоянные ссылки) или программно:

function wpdir_flush_rewrite_rules() {
    wpdir_add_rewrite_rules();
    flush_rewrite_rules();
}
register_activation_hook(__FILE__, 'wpdir_flush_rewrite_rules');

Обработка параметров в шаблонах и плагинах WordPress

Чтобы использовать добавленные параметры, можно обращаться к глобальному объекту запроса $wp_query или функции get_query_var():

function wpdir_filter_products_by_color() {
    $color = get_query_var('color');
    if ($color) {
        // Пример фильтрации WP_Query по цвету
        $args = array(
            'post_type' => 'product',
            'meta_query' => array(
                array(
                    'key' => 'product_color',
                    'value' => $color,
                    'compare' => '='
                )
            )
        );
        $query = new WP_Query($args);
        // Дальше выводим товары из $query
    }
}
add_action('template_redirect', 'wpdir_filter_products_by_color');

Такой подход позволяет сделать динамические страницы, меняющие содержимое в зависимости от параметров URL.

Примеры полезных плагинов для работы с параметрами URL

  • URL Params — позволяет сохранять параметры из URL в сессии для дальнейшего использования.
  • Query Wrangler — мощный инструмент для создания кастомных запросов с параметрами.
  • Clearfy Pro (https://wpshop.ru/plugins/clearfy-pro/?utm_source=wpdir.ru&utm_medium=article&utm_campaign=kak-dobavit-dinamicheskie-parametry-v-url-v-wordpress) — помогает оптимизировать работу сайта и может упростить управление параметрами URL.

Безопасность при работе с параметрами URL

Обязательно фильтруйте и экранируйте все входящие данные из URL. Используйте функции WordPress для очистки, например:

  • sanitize_text_field() — для строковых данных.
  • absint() — для целочисленных параметров.
  • esc_url() — для URL.

Также избегайте прямого вывода параметров без обработки, чтобы не допустить XSS-уязвимости.

Выводы и рекомендации

Добавление динамических параметров в URL — задача, которую можно решить как простым добавлением GET-параметров, так и с помощью более продвинутых rewrite rules. Выбор зависит от целей и масштабов вашего проекта.

Если нужен простой сбор данных — GET-параметры подойдут. Если хотите красивые ЧПУ и глубокую интеграцию — используйте rewrite rules и query vars.

Не забывайте про безопасность и тестируйте работу параметров на разных страницах и с разными плагинами, чтобы избежать конфликтов.

Как создать уникальный Metabox в WordPress с примером кода
23.12.2025
Как автоматизировать сборку данных с помощью AJAX в WordPress
04.04.2026
Как удалить неиспользуемые метаданные в WordPress для оптимизации сайта
10.12.2025
WooCommerce: автоматическое удаление неактивных товаров по дате последнего изменения
02.06.2026
Как удалить или изменить URL страницы в WordPress без перенаправления
19.01.2026