Wie kann ich die Suchbegriffe ohne Plugin hervorheben lassen?
15
Fügen Sie diese 2 Funktionen Ihrer functions.php hinzu
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;
}
Verwenden Sie die folgende Funktion, um den Inhalt für Ihre Suchergebnisse zu verwenden:
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>';
}
In der Schleife oder search.php Dateiaufruf <?php search_title_highlight(); ?>
statt <?php the_title(); ?>
und Nutzung <?php search_excerpt_highlight(); ?>
statt<?php the_excerpt(); ?>
Fügen Sie in Ihrem CSS die Suchhervorhebungsklasse hinzu, die alle gesuchten Wörter in Gelb hervorhebt.
.search-highlight {
background:#FFFF00
}
preg_quote()
auf$keys
an, um zu verhindern, dass Ihre Regex bei Sonderzeichen wie Klammern oder Klammern explodiert.the_excerpt
und seinthe_content
. Wie dem auch sei: Nice Antwort, aber der Kommentar von @Geert konnte in :) gearbeitet werdenDas obige funktioniert gut. Ich habe den ähnlichen Code ausgeführt, aber den Titel und den Auszug zusammengefügt. Aber gefunden, es bricht ab, wenn jemand ein Leerzeichen "" entweder am Anfang oder am Ende eines Suchbegriffs eingibt.
Also habe ich diese Zeile hinzugefügt:
Hoffe, dies erweist sich als hilfreich für andere.
quelle
Die obigen Lösungen unterbrechen die Seite, wenn der Suchbegriff in HTML-Tags enthalten ist. Sie sollten etwas verwenden wie:
quelle