¿Cómo puedo resaltar los términos de búsqueda sin el complemento?
15
Agregue estas 2 funciones a sus 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;
}
Para usar the_content para sus resultados de búsqueda, use la siguiente función:
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>';
}
En su bucle o busque el archivo search.php en <?php search_title_highlight(); ?>
lugar de <?php the_title(); ?>
y use en <?php search_excerpt_highlight(); ?>
lugar de<?php the_excerpt(); ?>
En su CSS, agregue la clase de resaltado de búsqueda que resaltará todas las palabras buscadas en amarillo.
.search-highlight {
background:#FFFF00
}
preg_quote()
para$keys
evitar que su expresión regular explote en caso de caracteres especiales como paréntesis o corchetes.the_excerpt
y en suthe_content
lugar. De todos modos: buena respuesta, pero el comentario de @Geert podría funcionar :)Lo anterior funciona bien. Ejecuté un código similar, pero uní el título y el extracto. Pero descubrió que se rompe cuando alguien ingresa un espacio "" al principio o al final de un término de consulta de búsqueda.
Así que agregué esta línea:
Espero que esto pruebe ayudar a otros.
fuente
Las soluciones anteriores rompen la página si el término de búsqueda aparece dentro de las etiquetas HTML. Deberías usar algo como:
fuente