Support » Diskussion » [resolved] Highlight von Suchstrings

  • Ein weit verbreitetes Code-Snippet, um Suchstrings hervorzuheben (plus CSS-Anweisung für die Markierung) ist das folgende:

    function highlight_results($text){
        if(is_search()){
     $keys = implode('|', explode(' ', get_search_query()));
     $text = preg_replace('/(' . $keys .')/iu', '<span class="search-highlight"></span>', $text);
        }
        return $text;
    }
    add_filter('the_content', 'highlight_results');
    add_filter('the_excerpt', 'highlight_results');
    add_filter('the_title', 'highlight_results');

    Lässt man das ganz normale Suchen-Feld von WordPress aber leer und drückt Enter (oder auf „Suchen“) werden die HTML-Tags angezeigt.

    Neue WP-Installation, 4.5.2
    Standardtheme Twentysixteen
    sonst nichts installiert,
    Standard-Beitrag und -Seite (also leicht nachvollziehbar).

    Eine Idee, was an dem Code verkehrt sein könnte/fehlt?

    Ist nicht direkt eine Supportanfrage. War mir nur in anderen Installationen aufgefallen (mit anderen Themes, etc.). Und habe es vorhin noch einmal mit einer jungfräulichen WP-Installation nachvollziehen können.

    Dasselbe übrigens auch bei diesem leicht abgeänderten (aber auch häufig anzutreffenden) Code:

    function wps_highlight_results($searchtext){
         if(is_search()){
         $sr = get_query_var('s');
         $keys = explode(" ",$sr);
         $searchtext = preg_replace('/('.implode('|', $keys) .')/iu', '<strong class="search-excerpt">'.$sr.'</strong>', $searchtext);
         }
         return $searchtext;
    }
    add_filter('the_excerpt', 'wps_highlight_results');
    add_filter('the_title', 'wps_highlight_results');

    Wäre das ein Fall für ein Trac-Ticket?

Ansicht von 2 Antworten - 1 bis 2 (von insgesamt 2)
  • Warum fügst du nicht ein if-Statment hinzu?

    function my_highlight_results($searchtext){
         if(is_search()){
         $sr = get_query_var('s');
         if ($sr) {
    	   	$keys = explode(" ",$sr);
         	$searchtext = preg_replace('/('.implode('|', $keys) .')/iu', '<strong class="search-highlight">'.$sr.'</strong>', $searchtext);
         }
         return $searchtext;
    	}
    }
    add_filter('the_excerpt', 'my_highlight_results');
    add_filter('the_title', 'my_highlight_results');

    Stimmt, das funktioniert. Super!

Ansicht von 2 Antworten - 1 bis 2 (von insgesamt 2)
  • Das Thema „[resolved] Highlight von Suchstrings“ ist für neue Antworten geschlossen.