Как заставить WordPress искать только по заголовкам записей?
Не секрет, что "родной" поиск в WordPress сделан из рук вон плохо. По этой причине многие используют сторонние плагины для поиска вроде Relevanssi. Нельзя с помощью какого-то небольшого сниппета кода улучшить качество поиска, но зато можно заставить движок искать только по заголовкам записей. Это может быть полезно, если у вас сайт с большим количеством записей и вы при этом по каким-то причинам не хотите использовать сторонние плагины поиска (например, при использовании плагинов автонаполнения сайта, которые могут добавлять статьи сотнями в день - в этом случае построение поискового индекса плагинами поиска может вызвать заметные нагрузки на сервер). Для включения поиска по заголовкам вам необходимо добавить в файл functions.php вашей темы следующий код:
//поиск только по заголовкам записей start function wph_search_by_title($search, &$wp_query) { global $wpdb; if (empty($search)) return $search; $q = $wp_query->query_vars; $n = !empty($q['exact']) ? '' : '%'; $search = $searchand = ''; foreach ((array) $q['search_terms'] as $term) { $term = esc_sql(like_escape($term)); $search.="{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')"; $searchand = ' AND '; } if (!empty($search)) { $search = " AND ({$search}) "; if (!is_user_logged_in()) $search .= " AND ($wpdb->posts.post_password = '') "; } return $search; } add_filter('posts_search', 'wph_search_by_title', 500, 2); //поиск только по заголовкам записей end |
С этим кодом поиск движком будет выполняться только по заголовкам записей.
Thank you very much, that is what do I need
- уже устаревшая функция. Её можно заменить на
.
Кстати, есть ещё классный сниппет для поиска, если пользователь ввёл запрос на неправильной раскладке: вариант 7.
Спасибо. Помогло. И заменил устаревшую функцию тоже.