В разработке на 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.
Не забывайте про безопасность и тестируйте работу параметров на разных страницах и с разными плагинами, чтобы избежать конфликтов.