Страница результатов поиска WordPress играет решающую роль, помогая посетителям найти релевантный контент на вашем веб-сайте. По умолчанию WordPress предоставляет единый поиск для всех типов сообщений. Однако могут быть случаи, когда вы захотите настроить страницу результатов поиска на основе разных типов сообщений. В этой статье мы рассмотрим несколько методов достижения такой настройки и приведем примеры кода.
Метод 1: использование готового плагина
Один из самых простых способов настроить страницу результатов поиска для разных типов сообщений — использовать готовый плагин. Например, плагин Relevanssi позволяет изменять поведение и результаты поиска в зависимости от типов сообщений. Вот пример того, как вы можете изменить результаты поиска, чтобы установить приоритет определенных типов сообщений:
function custom_search_filter($query) {
if ($query->is_search) {
$query->set('post_type', array('post', 'page')); // Specify the post types to include
}
return $query;
}
add_filter('pre_get_posts', 'custom_search_filter');
Метод 2. Изменение поискового запроса.
Другой подход — изменить поисковый запрос напрямую с помощью перехватчика действия pre_get_posts. Этот метод дает вам больше гибкости в настройке страницы результатов поиска. Вот пример:
function custom_search_filter($query) {
if ($query->is_search) {
$post_types = array('post', 'page'); // Specify the post types to include
$query->set('post_type', $post_types);
}
}
add_action('pre_get_posts', 'custom_search_filter');
Метод 3: создание шаблонов пользовательского поиска
WordPress позволяет создавать пользовательские шаблоны поиска для определенных типов сообщений. Используя эти шаблоны, вы можете полностью контролировать внешний вид и функциональность страницы результатов поиска. Вот пример:
- Создайте новый файл в каталоге вашей темы с именем
search-post.php. - Добавьте в файл следующий код:
<?php
/*
Template Name: Custom Search - Post
*/
get_header();
?>
<!-- Add your custom search results layout here -->
<?php get_footer(); ?>
- Повторите вышеуказанные шаги для других типов сообщений, например
search-page.phpдля страниц.
Метод 4. Изменение поискового SQL-запроса
Для расширенной настройки вы можете изменить поисковый SQL-запрос напрямую с помощью фильтра posts_search. Этот метод дает вам широкий контроль над алгоритмом поиска и результатами. Вот пример:
function custom_search_query($sql, $wp_query) {
if ($wp_query->is_search) {
global $wpdb;
$post_types = array('post', 'page'); // Specify the post types to include
$sql = str_replace(
"AND {$wpdb->posts}.post_type = 'any'",
"AND {$wpdb->posts}.post_type IN ('" . implode("', '", $post_types) . "')",
$sql
);
}
return $sql;
}
add_filter('posts_search', 'custom_search_query', 10, 2);
Настройка страницы результатов поиска WordPress для различных типов сообщений повышает удобство работы пользователей и повышает релевантность результатов поиска. В этой статье мы рассмотрели различные методы, в том числе использование плагинов, изменение поискового запроса, создание пользовательских шаблонов поиска и изменение поискового SQL-запроса. Внедрив эти методы, вы сможете создать более индивидуальный и эффективный поиск на своем веб-сайте WordPress.