tonyf
tonyf

Reputation: 35557

Highlighting Word(s) Searched on in WordPress Search

I am using built-in WordPress search.php routines, is it possible to highlight the word searched on, in context with the search results retrieved?

For example, if I typed in "products", any page that returned this matching word would be highlighted to the user.

Thanks.

Upvotes: 4

Views: 5278

Answers (2)

Chris_O
Chris_O

Reputation: 3444

Here is a function you can add to functions.php that will highlight the searched term in the results.

/* Search Highlighting ********************************************/
// This highlights search terms in both titles, excerpts and content

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;
}

To use this function it has to be added to your archive loop:

<?php if (is_search() ) { 

    search_excerpt_highlight(); } ?>

Upvotes: 5

Related Questions