Jak mogę wyróżnić wyszukiwane hasła bez wtyczki?
15
Dodaj te 2 funkcje do swojego functions.php
function search_excerpt_highlight() {
$excerpt = get_the_excerpt();
$keys = implode('|', explode(' ', get_search_query()));
$excerpt = preg_replace('/(' . $keys .')/iu', '<strong class="search-highlight">\0</strong>', $excerpt);
echo '<p>' . $excerpt . '</p>';
}
function search_title_highlight() {
$title = get_the_title();
$keys = implode('|', explode(' ', get_search_query()));
$title = preg_replace('/(' . $keys .')/iu', '<strong class="search-highlight">\0</strong>', $title);
echo $title;
}
Aby użyć zawartości w wynikach wyszukiwania, użyj poniższej funkcji:
function search_content_highlight() {
$content = get_the_content();
$keys = implode('|', explode(' ', get_search_query()));
$content = preg_replace('/(' . $keys .')/iu', '<strong class="search-highlight">\0</strong>', $content);
echo '<p>' . $content . '</p>';
}
W wywołaniu pliku loop lub search.php <?php search_title_highlight(); ?>
zamiast <?php the_title(); ?>
i użyj <?php search_excerpt_highlight(); ?>
zamiast<?php the_excerpt(); ?>
W swoim css dodaj klasę podświetlenia wyszukiwania, która podświetli wszystkie wyszukiwane słowa na żółto.
.search-highlight {
background:#FFFF00
}
preg_quote()
aby$keys
zapobiec wysadzeniu wyrażenia regularnego w przypadku znaków specjalnych, takich jak nawiasy lub nawiasy.the_excerpt
ithe_content
zamiast. W każdym razie: fajna odpowiedź, ale komentarz od @Geert może być wykorzystany :)Powyższe działa dobrze. Uruchomiłem podobny kod, ale powiązaj tytuł i fragment. Ale okazało się, że pęka, gdy ktoś wprowadza spację na początku lub na końcu wyszukiwanego hasła.
Więc dodałem tę linię:
Mam nadzieję, że to pomoże innym.
źródło
Powyższe rozwiązania powodują uszkodzenie strony, jeśli wyszukiwane hasło pojawia się w tagach HTML. Powinieneś użyć czegoś takiego:
źródło