Подсветка искомого запроса в результатах поиска

Подсветка результатов поиска WordPress
В продолжении сегодняшней темы о плагинах для поиска, хочу рассказать о том как сделать подсветку искомого запроса при поиске в WordPress. Для этого нам потребуется вставить несколько строк в файл search.php и отредактировать файл стилей.

1) Открываем файл search.php и находим там функцию <?php the_title(); ?>. Заменяем ее на:

<?php
$title = get_the_title();
$keys = explode(" ",$s);
$title = preg_replace('/('.implode('|', $keys) .')/iu', '<strong class="search-excerpt">\0</strong>', $title);
echo $title;
?>

2) Затем в файле search.php ищем функцию <?php the_excerpt(); ?> или <?php the_content(); ?> (зависит от темы которую Вы используете) и заменяем ее на:

<?php
$excerpt = get_the_excerpt();
$keys = explode(" ",$s);
$excerpt = preg_replace('/('.implode('|', $keys) .')/iu', '<strong class="search-excerpt">\0</strong>', $excerpt);
echo $excerpt;
?>

Если у вас в шаблоне использовалась функция the_content(), то, чтобы как и прежде выводился полный текст поста, необходимо в предыдущем куске кода заменить get_the_excerpt() на get_the_content(). Только учтите, что в этом случае возможны случаи некорректного отображения форматирования поста. Поэтому я рекомендую в результатах поиска выводить анонс поста (get_the_excerpt()).

Чтобы подсвечивать слова только по их полному соответствию запросу, в вышеуказанных кодах замените:

'/('.implode('|', $keys) .')/iu'

на

'~/b('.implode('|', $keys) .')/b~iu'

3) Открываем файл стилей style.css, и добавляем в него одну строчку:

.search-excerpt {background: yellow;}

4) Сохраняем файл и наслаждаемся результатом 😉

Как HTML-тег, так и стиль к нему (<strong class=”search-excerpt”></strong>) вы можете заменить на какой-либо другой, если есть желание. В этом случае внесите соответствующие корректировки в вышеуказанный php-код. Можно, например, сделать так, чтобы в заголовке фон выделенных слов был одним цветом, а в тексте поста другим.

За данный способ спасибо Dimox'y.

P.S. Также можно использовать плагин Search Unleashed или Search Hilite (у меня не заработал).

Рубрика: Настройка WordPress | 25 июля 2009

Предыдущие записи из рубрики `Настройка WordPress`

Комментировать