Такой фильтр я использовал на сайте энциклопедии, который построен на 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; }
Теперь стандартный поиск будет осуществляться только по заглавиям записей. Данный урок не будет популярным и востребован массово, но все же, кому-то пригодится. Если Вы использовали данный фильтр у себя на сайте, поделитесь в комментариях о своем сайте и почему на нем нужен такой способ ограничения поиска.
На этом все, спасибо за внимание. 🙂