По умолчанию WordPress использует URL вида https://site.ru/?s=запрос для отображения результатов поиска. Такой формат неудобен с точки зрения SEO и юзабилити. В этой статье мы разберём, как изменить URL выдачи поисковой формы на более читаемый и понятный, например, https://site.ru/search/запрос, без использования плагинов.
Почему стоит изменить URL поисковой выдачи
Стандартный URL с параметром ?s= не очень дружелюбен для пользователей и поисковых систем. Более красивые URL повышают доверие посетителей и способствуют лучшему индексу сайта в поисковиках.
Кроме того, кастомный URL удобнее использовать в навигации, делиться ссылками и интегрировать в другие системы.
Как работает стандартный поиск в WordPress
Когда пользователь вводит запрос в поисковую форму и отправляет её, WordPress формирует запрос к базе данных с параметром s. Этот параметр передаётся через GET-запрос, а страница результатов отображается с URL вида ?s=запрос.
Для изменения URL нужно перехватить запрос до его обработки и направить на нужный нам адрес, а также настроить правила перезаписи (rewrite rules) в WordPress.
Добавляем пользовательский URL для поиска через rewrite rules
В functions.php вашей темы или в кастомном плагине добавьте следующий код:
function wproot_add_search_rewrite() {
add_rewrite_rule('^search/([^/]*)/?','index.php?s=$matches[1]','top');
}
add_action('init', 'wproot_add_search_rewrite');Этот код создаёт правило, которое преобразует URL /search/запрос в стандартный запрос WordPress с параметром s=запрос.
После добавления правил необходимо обновить пермалинки, чтобы они вступили в силу. Для этого зайдите в админку WordPress: Настройки > Постоянные ссылки и нажмите кнопку "Сохранить изменения" без изменений.
Изменение формы поиска для использования нового URL
По умолчанию форма поиска WordPress отправляет данные с помощью GET на URL с параметром ?s=. Чтобы форма отправляла запрос по новому адресу, нужно изменить её action.
Добавьте в functions.php следующий фильтр, который изменит HTML формы поиска:
function wproot_search_form_action_url($form) {
$home_url = home_url('/search/');
$form = preg_replace('/action="[^"]*"/', 'action="' . esc_url($home_url) . '"', $form);
return $form;
}
add_filter('get_search_form', 'wproot_search_form_action_url');Данный фильтр заменит атрибут action в форме поиска на https://site.ru/search/, а введённый пользователем запрос автоматически добавится к URL благодаря правилу перезаписи.
Обработка специальных символов и пробелов в запросах
При использовании URL с параметром в пути важно корректно обрабатывать пробелы и специальные символы в поисковых запросах. WordPress автоматически кодирует URL, но в некоторых случаях нужно дополнительно использовать функции PHP и JS для кодирования.
Для примера, если в поисковом запросе есть пробел, он преобразуется в %20 или знак +. Правило перезаписи и WordPress умеют это обрабатывать, но стоит проверить на тестовом сайте все варианты.
Пример создания полностью кастомной поисковой формы с поддержкой нового URL
Если вы хотите полностью контролировать форму поиска, можно создать собственный HTML с JavaScript для перенаправления на нужный URL:
<form role="search" method="get" id="searchform" class="searchform" onsubmit="return wprootSearchRedirect(this);">
<input type="text" value="" name="s" id="s" placeholder="Поиск..." />
<input type="submit" id="searchsubmit" value="Поиск" />
</form>
<script>
function wprootSearchRedirect(form) {
var query = encodeURIComponent(form.s.value.trim());
if (query === '') {
return false; // не отправлять пустой запрос
}
window.location.href = '/search/' + query;
return false; // отменяем стандартную отправку формы
}
</script>Такой подход гарантирует корректное перенаправление пользователя на новый URL с поисковым запросом.
Совместимость с плагинами и SEO
Большинство SEO-плагинов (Yoast SEO, Rank Math) корректно обрабатывают кастомные URL поисковой выдачи, если они правильно добавлены через rewrite rules. Однако стоит проверить, не конфликтует ли ваш код с установленными плагинами.
Если у вас установлен плагин Clearfy Pro с функцией оптимизации URL, можно дополнительно проверить, не дублируется ли функционал. В случае конфликта лучше оставить один из вариантов.
Как вернуть стандартный URL, если что-то пошло не так
Чтобы вернуть стандартный URL, просто удалите добавленный код с rewrite rules и фильтр изменения формы. После этого обновите пермалинки в админке.
Итог
Изменение URL поисковой выдачи WordPress на более читабельный и SEO-дружелюбный можно реализовать самостоятельно без плагинов, используя rewrite rules и фильтры формы поиска. Такой подход улучшит юзабилити, повысит рейтинг сайта и сделает ссылки более привлекательными для пользователей.
Для дополнительной автоматизации и расширения функционала можно рассмотреть плагины вроде Clearfy Pro, который обладает множеством настроек SEO и оптимизации.