Como destacar os termos de pesquisa sem o plug-in?
15
Adicione estas 2 funções às suas funções.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;
}
Para usar o conteúdo para os resultados da pesquisa, use a função abaixo:
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>';
}
No seu loop ou no arquivo search.php, chame em <?php search_title_highlight(); ?>
vez de <?php the_title(); ?>
e use em <?php search_excerpt_highlight(); ?>
vez de<?php the_excerpt(); ?>
No seu css, adicione a classe de destaque de pesquisa, que destacará todas as palavras pesquisadas em amarelo.
.search-highlight {
background:#FFFF00
}
preg_quote()
para$keys
evitar que seu regex seja explodido no caso de caracteres especiais, como parênteses ou colchetes.the_excerpt
e emthe_content
vez disso. Enfim: resposta de Nice, mas o comentário de @Geert poderia ser trabalhado em :)O exemplo acima funciona bem. Eu executei o código semelhante, mas amarre o título e o trecho. Mas constatou quebras quando alguém entra em um espaço "" no início ou no final de um termo de consulta de pesquisa.
Então, eu adiciono esta linha:
Espero que isso prove ajudar os outros.
fonte
As soluções acima quebram a página se o termo de pesquisa aparecer dentro das tags HTML. Você deve usar algo como:
fonte