Такой фильтр я использовал на сайте энциклопедии, который построен на WordPress. Это маленькая энциклопедия по садоводству и ее автор попросил меня убрать поиск по всему тексту записи и оставить только по заглавиям.
Как и говорил, делается это с помощью фильтра. Для этого нужно в файл пользовательских функций functions.php добавить такой код:
add_filter('posts_search', 'iskat_tolko_po_zagolovkam', 500, 2);
function iskat_tolko_po_zagolovkam($poisk, &$wp_zapros) {
global $wpdb;
if (empty($poisk)) :
return $poisk;
endif;
$q = $wp_zapros->query_vars;
$n = !empty($q['exact']) ? '' : '%';
$poisk = $poiskand = '';
foreach ((array) $q['search_terms'] as $term) :
$term = esc_sql(like_escape($term));
$poisk .= "{$poiskand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
$poiskand = ' AND ';
endforeach;
if (!empty($poisk)) :
$poisk = " AND ({$poisk}) ";
if (!is_user_logged_in()) :
$poisk .= " AND ($wpdb->posts.post_password = '') ";
endif;
endif;
return $poisk;
}
Теперь стандартный поиск будет осуществляться только по заглавиям записей. Данный урок не будет популярным и востребован массово, но все же, кому-то пригодится. Если Вы использовали данный фильтр у себя на сайте, поделитесь в комментариях о своем сайте и почему на нем нужен такой способ ограничения поиска.
На этом все, спасибо за внимание. 🙂