Code der Suchfunktion von WordPress
WordPress

Die WordPress Suche – erweitern, verbessern und funktionsfähig machen

Die Suchfunktion von WordPress ist nicht gerade überragend. Und das bei der wohl beliebtesten Blogsoftware, die auch als leicht erweiterbares CMS auf kleinen Webseiten problemlos verrichten kann.

Eine Suche auf einer Standard-WordPress-Installation bringt nur chronologisch sortierte Ergebnisse zu einem Suchbegriff hervor. Doch warum gibt es nicht den am besten passenden Artikel zu dem gesuchten Begriff?! Und wie kann man die Suchfunktion von WordPress wenigstens etwas herausputzen? Und sinnvoll erweitern?

Code der Suchfunktion von WordPress

Code der Suchfunktion von WordPress


Erwartungen an die WordPress Suche

Eine vernünftige Suchfunktion ermöglicht eine bessere Orientierung auf einer Internetseite. Andere und ähnliche Artikel können gefunden werden, zu anderen -vielleicht im Nebensatz erwähnten Themen- kann der Besucher recherchieren. Zeitarchive sind bei einer thematischen Suche kein Ersatz und auch Kategorie- bzw. Tagarchive sind manchmal zu unübersichtlich.

Was soll eine gute Suchfunktion leisten können?

  • Sie soll die Inhalte nach Relevanz sortiert präsentieren.
  • Sie soll statische Seiten und chronologische Blogeinträge gleichermaßen einbeziehen.
  • Sie soll auch Inhalte von Besuchern (Kommentare) miteinbeziehen.
  • Sie soll Möglichkeiten zur Verfeinerung / Verbesserung einer Suchanfrage anbieten (z.B. in Form von ähnlichen Suchen).
  • Sie soll Rechtschreibfehler abfangen (z.B. wie bei einer Google-Suche: Meinten Sie: …).
  • Sie soll auch Ergebnisse für Synonyme aufzeigen.
Apple-Suchbox mit search suggest

Apple-Suchbox mit search suggest

Spielereien?!

Selbstverständlich sind auch noch weitere Funktionen einer Suchfunktion denkbar. So könnte es eine Suggest-Funktion geben, die bereits während der Eingabe eines Suchbegriffes, diesen versucht zu vervollständigen und eine Anzahl der Treffer ausgibt.

Google hat mit Google Suggest eine solche Funktion und auch andere Webseiten wie Apple (Suchbox oben rechts) bieten es an. Da wird Suchen zu einem Erlebnis, wenn Apple sogar noch kleine Bilder einbettet (siehe Screenshot rechts).

Erwartungen umsetzen …Einige WordPress-Plugins

Möchte man nicht so weit gehen und die WordPress-Suche gleich komplett deaktivieren (Anleitung), sollte man sie vielleicht mit dem ein oder anderen Plugin aus dem WordPress Plugin Verzeichnis verbessern.
Joost de Valk stellt in einem älteren, englischen Artikel mehrere Plugins vor, um die Suchfunktion zu verbessern.

WordPress Plugin Search Suggest

So liefert Search Suggest bei einer Suche ähnliche Suchanfragen aus. Und versucht auch Rechtschreibfehler abzufangen, indem es die bekannte Funktion Meinten Sie: … ausgibt. Dazu wird eine API von Yahoo! benutzt.
Problematisch bei der Anzeige von ähnlichen Suchanfragen ist allerdings, dass diese nicht unbedingt auf der eigenen WordPress-Installation zu einem Ergebnis führen müssen. Die Yahoo! Suche kann bei vielen Eingrenzungen auch weitere Ergebnisse liefern. Bei einer kleinen Seite wie meiner ist eine solche Eingrenzung der Suchergebnisse aber in vielen Fällen nicht erfolgreich.
Trotz angegebener Kompatibilität bis WordPress 2.6 funktioniert es nach meinen Tests problemlos auf einer WP 2.7 Installation. Auch muss das Plugin noch händisch bearbeitet werden, damit die Hinweistexte nicht auf englisch erscheinen. Bei einer deutschsprachigen Seite doch eher ein Muss.
Dazu muss man das Plugin über einen FTP-Client erst beschreibbar machen und sucht dann im WordPress Plugin Editor diesen Code:

		if ($full) {
			echo "<p>Did you mean <strong>".$output."</strong>?</p>";
		} else {
			return "<p>Did you mean <strong>".$output."</strong>?</p>";
		}

Und ändert den englischen Text:

		if ($full) {
			echo "<p>Meintest du vielleicht: <strong>".$output."</strong>?</p>";
		} else {
			return "<p>Meintest du vielleicht: <strong>".$output."</strong>?</p>";
		}

Und fügt dann in seinem WordPress Theme nur noch bei der Anzeige der Suchergebnisse diesen Code-Schnipsel ein:

<?php if ( function_exists('spell_suggest') ) { spell_suggest(); } ?>

Search Unleashed

Um die Suchfunktion auf Beiträge, statische WordPress Seiten, Kommentare und Inhalte von Plugins zu erweitern, empfiehlt sich Search Unleashed. Bei einer Suchanfrage werden passende Snippets (Textauszüge) angezeigt und die jeweiligen Suchbegriffe auch farblich hervorgehoben.
Ebenso bekommen Besucher von Suchmaschinen die gesuchten Begriffe in einem kleinen Textfeld oberhalb des Artikels angezeigt und die Fundstellen werden auch hier hervorgehoben.

Search Unleashed: hervorgehobene Suchergebnisse & Textbox

Search Unleashed bringt bereits eine deutsche Übersetzung mit, sodass hier keine Nacharbeiten nötig sind. Nach der Installation kann das Plugin out-of-the-box benutzt werden, wenn man es nicht anpassen möchte und bspw. bestimmte Seiten oder Beiträge ausschließen möchte.
Unterstützt werden ebenfalls einige Operatoren wie das Wildcard-Sternchen (Beispielsuche wordpre*).

wpSearch

Die Opensource Suchmaschine Lucene wird von dem Plugin wpSearch benutzt, um die Suchergebnisse nach Relevanz auszugeben. Nach der Installation ist es möglich, die Kriterien zu verfeinern und dem Titel eines Beitrages, dem Inhalt, den verwendeten Tags oder Kommentaren eine höhere oder niedrigere Punktezahl zuzuordnen, nach denen dann die Relevanz der Suchergebnisse bestimmt wird.

wpSearch Einstellungen

wpSearch ist die perfekte Ergänzung zu Search Unleashed. Das Zusammenspiel beider Plugins ist problemlos. Damit wpSearch aber keine “Null-Ergebnisse” liefert, sollte man zwischendurch immer mal wieder den Suchindex über die Einstellungsseite neu erstellen.

Update 10.12.2009: wpSearch scheint nicht mehr mit aktuellen WordPress Versionen (hier 2.8.6) zu funktionieren. Stattdessen verwende und empfehle ich das Plugin Relevanssi.

Externe Lösungen: Google- oder Yahoo!-Suche einbinden

Ende 2007 testete ich kurz die Möglichkeit, die Yahoo! bzw. Google-Suche auf dieser Seite einzubinden. Ich entschied mich damals dagegen und auch heute sind meine Bedenken gegenüber der Datenkrake Google noch hoch genug. Ebenso möchte ich auf meiner Seitensuche keine Werbung sehen. Die Yahoo! Ergebnisse fand ich damals übrigens noch nicht einmal berauschend.

Such-Template verbessern

Auch die Ausgabe der Suchergebnisse kann leicht aufbereitet werden, um den Suchenden ein besseres Sucherlebnis zu bieten. Einige Tipps:

Suchbegriff ausgeben
Nach welchen Begriffen hatte ich nochmal gesucht? Mit diesem kleinen Code gibt man die gesuchten Begriffe aus:

<?php the_search_query() ?>

Suchfeld mit benutztem Suchbegriff
Warum nicht den Besuchern ein Suchschlitz anbieten, indem schon die benutzten Suchbegriffe eingetragen sind? So gehts:

    <form id="searchform" method="get" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
    <div>
        <input class="searchfield"  type="text" value=" <?php the_search_query(); ?> " name="s" id="s" />
        <input class="submit" type="submit" value="Suchen" title="Suchen" />
    </div>
    </form>

Navigation umbenennen
Standardmäßig kann man bei mehr als einer Seite mit Suchergebnissen weiterblättern. Aber die Bezeichnung dieser Links ist mit Ältere Beiträge bzw. Neuere Beiträge sehr missverständlich, wenn die Suchergebnisse nach Relevanz sortiert werden. Die Änderung ist einfach:

<div class="navigation">
	<div class="alignleft"><?php next_posts_link('&laquo; Weitere Suchergebnisse') ?></div>
	<div class="alignright"><?php previous_posts_link('Vorherige Suchergebnisse &raquo;') ?></div>
</div>

Kategorien oder Tagcloud ausgeben
Warum nicht alternative Navigationsmöglichkeiten ebenfalls anbieten? Je nachdem ob Kategorien oder Tags benutzt werden, können auch diese ausgegeben werden.

Kategorien ausgeben:

<?php wp_list_cats(); ?>

Tagcloud ausgeben:

<?php wp_tag_cloud(); ?>

Mit relativ einfachen Mitteln ist es also möglich, auch eine gute WordPress Suchfunktion seinen Besuchern zur Verfügung zu stellen. Die gewöhnliche WordPress Suche darf man m.E. einem Suchenden nicht zumuten, wenn man selber einmal in die Verlegenheit kam, auf einem Blog etwas zu suchen. Irgendwann hilft dann nur noch eine Google-Suche – schon etwas peinlich …

Was sind eure Erfahrungen mit der Suche auf WordPress Seiten?

22 Kommentare

  1. alte Kiehvoz

    Ich nutze bei mir das Plugin search-everything. Das ersetzt einfach die normale WordPress-Suche, man muss also nicht am Code herumbasteln und viele Einstellungen, wo überall gesucht werden soll, gibt es ebenfalls im Admin-Panel.

    Das es noch weitere Such-Plugins gibt, wusste ich garnicht.

  2. Doch, doch, da gibt es noch einige Plugins … Search Everything testete ich vor einiger Zeit und es machte bei meiner WordPress Installation nur Probleme. Warum weiß ich nicht, sodass ich mich entschied, andere Suchplugins zu benutzen.

  3. Ein interessanter Beitrag. Was mir persönlich am meisten abgeht bei der WordPress-Suche ist, dass es keine Analyse der Suchbegriffe gibt, also was die Benutzer eingetippt haben.

    Deine Entscheidung die Google und Yahoo-Dienste nicht zu verwenden ist ein richtiger Schritt. Auf fast jeder Website im Internet ist Google in irgendeiner Form vertreten z.B. über Analytics… eine äußerst bedenkliche Situation!

  4. Search Unleashed bringt ein einfaches Log mit, aber eine Möglichkeit zur Auswertung o.ä. gibt es leider nicht.

  5. alte Kiehvoz

    Ich hab bei mir das Plugin Semmelstatz laufen, da werden die Suchbegriffe der internen Suche auch mit geloggt. Aber wer schon ein anderes Statistik-Tool am laufen hat, installiert sich bestimmt nicht noch eins, nur um ein Suchwort-Log zu erhalten…

    Ich nutze nur Semmelstatz als Statistik-Tool, das reicht mir :)

  6. Danke für die Tipps, die Plugins bieten leider nicht die gesuchte Funktionalität. Ich habe mir das jetzt selbst programmiert. Das Template-Tag “the_search_query()” gibt ja das Suchwort zurück, ich speichere es in der Datenbank und mache via PHP ein einfaches Rankig.

  7. Naja, wenn man sich selber die Mühe machen möchte und vor allem so etwas problemlos in PHP schreiben kann, braucht man sicherlich keine Plugins, da hast du recht … Auch wenn mich persönlich die Ergebnisse von wpSearch doch überzeugen.

  8. Pingback: Bibliothekarische Spielerei? Die Suchfunktion im Weblog. : WEBLOG – Genderbibliothek

  9. Ich sollte noch erwähnen, dass Search Unleashed im Zusammenspiel mit YARPP einen schwerwiegenden Fehler aktuell bei mir produziert. Weshalb ich Search Unleashed deaktivierte …

  10. Ich muss meinen vorherigen Kommentar revidieren: Search Unleashed bringt Fehler, wenn Suchbegriffe auf der Suchergebnis-Seite hervorgehoben werden. Deaktiviert man dies, funktioniert es fehlerfrei bei mir.

  11. Pingback: Links für Sonntag, 08.11.2009 – 6 52 pm - Wordpresshosting

  12. Urmas

    Die Alternative, dass ich lieber für WP suchen is Search Everything. Einfache und schnelle Installation. Vielleicht ist das nicht so anspruchsvoll, den die alternative die Sie beschrieben haben.

  13. Adrian

    Hallo zusammen,

    ich habe lange verzweifelt gesucht, bis ich auf Deinen Beitrag gestossen bin. So wie ich das sehe, sind hier Leute am Werk, welche wissen von was sie schreiben.

    Ich will meine Blog-Suche in meine “normale” Seite integrieren. D.h. ich will, wenn jemand etwas auf meinem Blog sucht, die Blog-Suchfunktion auch auf einem anderen URL sucht und die Ergebnisse dann von beiden Seiten anzeigt.

    Gibts da was? Habt ihr mir einen Tipp?

    Ich würde Euch sehr dankbar sein.

    Adrian

  14. Ein eigenes WordPress-Plugin dazu kenne ich nicht. Ich denke, dass Einfachste dürfte eine individuelle Google-Suche sein. Unter http://www.google.com/cse kannst du eine erstellen. Deren Nachteil ist allerdings die grundsätzlich immer eingeblendete Werbung bei den Suchergebnissen. Yahoo bietet auch einen ähnlichen Service an.

  15. Tschy

    wisst ihr, ob und wie weit kombinierte suchanfragen (also aus 2 oder mehr wörtern bestehend) in wp sowie in den genannten plugins unterstützt werden ? was sindd eure erfahrungen bzw. lösungen?

    ich habe die beobachtung angestellt, dass kombinierbare suchen gut funktionieren, solange man 2 kategorienamen als suchbegriffe mischt. sobald ich aber einen inhaltlich relevanten string mit einem tag oder einem kategorienamen vermische, bekomme ich keine zufriedenstellenden ergebnisse bzw. sehr oft gar kein einziges.

    ich verwende die kombi aus searcheverything und searchtags. leider habe ich viel picture-content, der mittels lightbox gerendert wird und die suche nach metadaten und unadressierbarer lightbox-inhalte(keine direkt aufrufbare url) das ganze unterfangen erschweren.daher tagge ich alles was in den gallerien auftaucht…

    also, wer weiss wie man kombinierte suchen erfolgreich einbinden kann ? thx!

  16. Ich denke, dass Du Dir einmal Relevanssi anschauen solltest. Du kannst dort Tags ein zusätzliches “Gewicht” bei der Bewertung zuordnen. Zudem sucht das Plugin auch nach Wortbestandteilen, wenn es das Wort direkt nicht finden kann.

  17. Anonymous

    Hi Marc, Danke für den Tipp, ich werd´s mal damit versuchen.

  18. eh

    hallo, vielleicht kannst du mir weiterhelfen. ich möchte die suche bei wordpress so nutzen, dass kategorie- und freitext-suche kombiniert abgefragt werden, ich also bei eingabe der kategorie autos und des begriffes ford nur die posts bekomme bei denen ford im text auftaucht und die gleichzeitg unter auto kategorisiert sind. im moment kann ich das nur getrennt, wenn ich die standard bausteine von wordpress nutze.

  19. Hey eh!

    Wenn du das Plugin Relevanssi benutzt, dürfte es recht einfach gehen: Du erstellst jeweils ein Suchfeld für die Kategorien und fügst dort dann ein:

    <input type=’hidden’ name=’cat’ value=’list of cats and tags’ />

    Dann musst du es nur noch stylen und es sollte funktionieren.

  20. Pingback: Usability im EXlog: die interne Suche | EXlog

  21. Pingback: Die interne Suche » Webmaster-Zentrale