В SEO и аналитике сайтов на WordPress нередко возникает задача очистить или модифицировать текст, который пользователи вводят в поисковую строку, а также как он отображается в URL и запросах поисковых систем. В частности, бывает необходимо удалить определённые слова или символы из поискового запроса, чтобы получить более чистые данные или улучшить релевантность выдачи. В этой статье мы разберём, как удалить текст из запроса поисковика в WordPress, используя кастомные функции и плагины.
Почему важно удалять лишний текст из поискового запроса
При работе с поиском на сайте WordPress, особенно если вы используете собственную форму поиска или интегрируетесь с внешними системами аналитики, часто в запросах появляются слова-заполнители, стоп-слова или мусорные символы. Это мешает корректному анализу запросов и ухудшает пользовательский опыт. Например, пользователи могут вводить фразы с избыточными служебными словами или знаками препинания, которые не несут смысловой нагрузки.
Удаление лишнего текста позволяет:
- Улучшить качество поиска на сайте;
- Собрать более точную статистику запросов;
- Оптимизировать выдачу и фильтрацию контента;
- Повысить скорость обработки запроса.
Далее посмотрим, как это реализовать на практике.
Фильтрация поискового запроса с помощью хуков WordPress
WordPress предоставляет несколько хуков для вмешательства в процесс обработки поисковых запросов. Для очистки текста запроса мы можем использовать хук request или pre_get_posts. Ниже пример функции, которая удаляет заданные слова из поискового запроса.
Пример функции удаления стоп-слов из поискового запроса
function wpkpi_filter_search_query( $query_vars ) {
if ( isset( $query_vars['s'] ) ) {
$stop_words = array('и', 'в', 'на', 'с', 'по'); // список слов для удаления
$search_text = $query_vars['s'];
// Разбиваем строку на слова
$words = explode(' ', $search_text);
// Фильтруем слова
$filtered_words = array_filter($words, function($word) use ($stop_words) {
return !in_array(mb_strtolower($word), $stop_words);
});
// Собираем обратно строку
$query_vars['s'] = implode(' ', $filtered_words);
}
return $query_vars;
}
add_filter('request', 'wpkpi_filter_search_query');
В этом примере мы удаляем из поискового запроса популярные предлоги и союзы, которые обычно не влияют на смысл поиска. Функция использует хук request, чтобы изменить параметры запроса до того, как WordPress выполнит поиск в базе данных.
Использование плагинов для очистки поисковых запросов
Если вы не хотите писать код самостоятельно, то можно воспользоваться готовыми плагинами, которые расширяют возможности поиска и фильтрации запросов. Вот несколько популярных плагинов, которые помогут очистить запросы или убрать лишний текст:
1. Search Regex
Этот плагин позволяет выполнять поиск и замену в базе данных и может помочь при массовом удалении нежелательного текста из запросов, если вы храните их в пользовательских таблицах или логах.
2. Relevanssi – A Better Search
Relevanssi – мощный плагин, улучшающий поиск на WordPress. Он поддерживает исключение стоп-слов и синонимов из поиска, что позволяет контролировать, какие слова учитываются в запросах.
3. WP Extended Search
Этот плагин расширяет стандартный поиск WordPress и позволяет более гибко настраивать фильтрацию запросов, включая исключение определённых слов.
Как использовать регулярные выражения для удаления нежелательных частей запроса
Вместо простого удаления слов по списку, можно использовать регулярные выражения для более сложной фильтрации. Например, удалим из запроса все символы кроме букв и цифр, а также заменим множественные пробелы одним.
function wpkpi_clean_search_query_regex( $query_vars ) {
if ( isset( $query_vars['s'] ) ) {
$search_text = $query_vars['s'];
// Удаляем все, кроме букв, цифр и пробелов
$search_text = preg_replace('/[^\p{L}\p{N}\s]+/u', '', $search_text);
// Заменяем множественные пробелы одним
$search_text = preg_replace('/\s+/', ' ', trim($search_text));
$query_vars['s'] = $search_text;
}
return $query_vars;
}
add_filter('request', 'wpkpi_clean_search_query_regex');
Этот код полезен, если вы хотите убрать из поискового запроса знаки препинания, спецсимволы и другие ненужные символы, которые могут мешать корректной работе поиска.
Как проверить и отладить работу фильтров поискового запроса
Чтобы убедиться, что ваши функции работают корректно, используйте отладочные техники:
- Добавьте временный вывод переменной запроса
$query_vars['s']черезerror_log()илиvar_dump(); - Используйте плагин Query Monitor для просмотра параметров запроса и SQL-запросов;
- Тестируйте функции на различных примерах поисковых фраз с лишними словами или символами;
- При необходимости используйте отдельную среду разработки.
Например, добавим простой лог:
function wpkpi_debug_search_query( $query_vars ) {
if ( isset( $query_vars['s'] ) ) {
error_log('Search query: ' . $query_vars['s']);
}
return $query_vars;
}
add_filter('request', 'wpkpi_debug_search_query');
Резюме по удалению текста из запроса поисковика в WordPress
Удаление лишнего текста из поискового запроса помогает улучшить качество поиска на сайте, сделать аналитику более точной и повысить удобство пользователей. Вы можете реализовать это с помощью простых функций на PHP, используя хук request, или воспользоваться готовыми плагинами для расширенного управления поиском.
Важным моментом является тестирование и отладка функций, чтобы не исказить намерения пользователя и сохранить релевантность результатов. Регулярные выражения и фильтрация по списку стоп-слов — два основных подхода, которые можно комбинировать для достижения нужного эффекта.