WordPress: Empfehlungen auf der 404-Seite

Für Besucher einer Webseite ist es sehr ärgerlich, wenn sie plötzlich statt des gewünschten Inhalts nur eine 404-Fehlerseite („Seite nicht gefunden“) erhalten. Dabei ist es egal, ob die Ursache ein fehlerhafter interner oder externen Link, ein Tippfehler des Besuchers selbst oder tatsächlich eine mittlerweile nicht mehr existierende Seite ist. Häufig gibt es keinen wirklich hilfreichen Hinweis wie es nun weitergehen soll.

Dabei hat man als Webmaster durchaus viele Möglichkeiten, den Besucher auf die richtige Fährte zu führen oder zumindest irgendwie für die sonstigen Inhalte zu begeistern. Beliebt sind hier mittlerweile witzig gestaltete Fehlerseiten, die den ersten Ärger verfliegen lassen sollen. Außerdem kann man Hilfestellungen geben, z.B. die Struktur der Seite erläutern, auf eine Sitemap verweisen oder die Suchfunktion hervorheben. Noch besser wäre es aber, wenn man irgendeinen Hinweis auf das eigentlich gewünschte Ziel hätte und so direkt passende Links anbieten könnte. Dadurch könnte der Besucher im Idealfall direkt dorthin gelangen, wo er eigentlich auch hin wollte, ohne das er in irgendeiner Form selbst suchen müsste.

Recht einfach gestaltet sich dies noch, wenn der fehlerhafte Link aus einer Suchmaschine stammt und man einfach die Suchbegriffe auswerten könnte. Bei einem manuellen Tippfehler oder bei einem sonstigen fehlerhaften Link hilft das aber schon nicht mehr weiter. Aber immerhin haben wir die aufgerufene URL und können uns daran orientieren. In diesem Blog verwende ich die Beitrags- und Seitentitel als Permalinks, wodurch sich durchaus Anhaltspunkte ergeben können. Ruft ihr beispielsweise den fehlerhaften Link https://www.braekling.de/wp-piwik-wpmu-piwik-wirdpress/ auf, dann stehen in der URL immerhin die Stichworte „wp“, „piwik“, „wpmu“ und „wirdpress“. Offenbar liegt der Tippfehler hier in „wirdpress“, was eigentlich „wordpress“ sein müsste. Nun zerlege ich einfach die URL in diese Stichworte und suche Artikel, denen eben solche Stichworte als Tags zugewiesen sind. Dadurch kann ich dann die Empfehlungen aussprechen, die ihr z.B. auf der oben verlinkten Fehlerseite sehen könnt, und der Besucher kann den korrekten Link direkt anklicken.

Sicherlich kann man das noch aufwendiger gestalten, z.B. indem man auf die interne WordPress-Suche zurückgreift oder versucht ähnliche Permalinks ausfindig zu machen. Als erster Denkanstoss sollte diese Lösung aber durchaus ausreichen, weshalb ich hier natürlich auch die Umsetzung kurz vorstellen möchte.

Zunächst müsst ihr das 404-Template eures Themes öffnen, das normalerweise 404.php heißen sollte. An der passenden Stelle, z.B. nach dem Hinweistext, der auf den Fehler hinweist, fügt ihr nun folgenden Code ein:

Was passiert dabei?

Zuerst extrahiert die folgende Zeile mögliche Stichworte aus der URL:

Die preg_replace-Anweisung ersetzt zunächst alles, was in der Aufruf-URI (Request URI) kein Buchstabe und keine Ziffer ist, durch Leerzeichen. Anschließend entfernt die trim-Anweisung überflüssige Leerzeichen am Anfang und am Ende der Zeichenkette. Die übrigen Leerzeichen zwischen den Stichworten werden dann per str_replace durch Kommata ersetzt, so dass die obige Beispiel-URL zu wp,piwik,wpmu,piwik,wirdpress wird.

Nun kann diese Stichwortliste als Parameter für die query_posts-Anweisung verwendet werden:

Der Parameter posts_per_page ist optional und schränkt in diesem Fall die Anzahl der Ergebnisse auf 5 ein. Nun folgt nur noch die typische Loop-Konstruktion von WordPress um eine Liste mit Links zu den gefundenen Posts darzustellen. Das war’s!

Übrigens: Vielleicht ist es sinnvoll keinerlei Ausgabe vorzunehmen, wenn so keine Inhalte gefunden wurden. Ansonsten könnte der Besucher bei einer leeren Empfehlungsliste auf die Idee kommen, dass er offenbar nichts brauchbares auf der Seite finden wird 😉