Die WordPress-Suche effektiv deaktivieren
WordPress & Co

Die WordPress-Suche effektiv deaktivieren

Es gibt Seiten mit WordPress da kann ich einfach keine Suche brauchen. Besonders einfache Firmenseiten mit ein paar Informationsseiten und ohne Blog-Funktionen sind ohne Suchformular oft besser dran. Klar kannst du einfach das Fenster für die Suche oder auch nur den Menüpunkt ausblenden. Aber der Aufruf mit dem Suchparameter geht trotzdem. Schau einfach weiter, wenn du die Suche vollständig und ganz einfach abschalten willst.

Die Suche in WordPress ausblenden

Normalerweise blenden wir das Suchfenster oder -formular in WordPress einfach aus und gut ist es. Aber trotzdem kann sie jeder noch weiterverwenden. Dazu braucht nur http://example.com/?s=magical in die Adresszeile eingegeben werden und schon ist der/die AnwenderIn mit den Suchergebnissen versorgt. Und auch Google verwendet das um deine Seite zu durchsuchen. Es reicht also nicht

  • Das Such-Widget aus den Seitenleisten zu entfernen
  • Den Menüpunkt Suche zu entfernen
  • Das Suchelement mit display:none  in der style.css ausblenden.

All diese Aktionen verbergen zwar die Suche, aber bleibt sie trotzdem aktiv.

Die Suche endgültig deaktivieren

Dazu brauchst du ein paar Zeilen Programmcode, aber so schwierig ist das gar nicht. Am einfachsten ist es wenn du die functions.php in deinem Theme öffnest und die folgenden Zeilen am Ende einfügst. Aber beim nächsten Update wird dir das ganze dann wieder überschrieben. Besser ist es du legst dir ein Child-Theme an und fügst den Code dort in die functions.php ein. Dann ist beim nächsten Update des Themes auch alles gut.

// Deaktivieren der Suche in WordPress
function tmdn_filter_query($query, $error = true) {
  //nur falls die Suche aufgerufen wurde
  if (is_search()) {
    $query->is_search     = false;  //Conditional-Tag auf falsch setzen
    $query->query_vars[s] = false;  //Suchebegriff aus den Query-Vars des Loop entfernen
    $query->query[s]      = false;  //Suchbegriff aus dem Query des Loops entfernen
    //falls ein 404 (Seite nicht gefunden) aufgetreten ist
    if ($error == true) {$query->is_404 = true;}
  }
}
add_action('parse_query', 'tmdn_filter_query');
add_filter('get_search_form', create_function('$a', "return null;"));

Eigentlich ist das Programmieren ja gar nicht so schwierig. Die Zeilen in der Funktion tmdn_filter_query habe ich dir gut dokumentiert (das ist der Text hinter den //). Und diese Funktion rufen wir in der Zeile 12 mit einem Hook auf. Dieser wird von WordPress verwendet wenn die Suche aufgerufen wird. Das brauchen wir, falls jemand oder auch eine Crawler, die Suche direkt aufruft. Denn damit wird kein Resultat mehr zurückgeliefert.

In der Zeile 13 verwenden wir noch die Funktion add_filter() von WordPress. Damit schaffen wir es, das Suchformular, falls es angezeigt werden soll, zu verändern. Ganz am Ende siehst du return null. Das ist die Anweisung, dass kein Formular für die Suche mehr geliefert werden soll.

Damit sind wir da wo wir hinwollen. Falls die Suche aufgerufen wird, bekommen wir keine Resultatseite und falls das Suchformular angefordert wird, baut es WordPress nicht mehr zusammen. Mehr oder weniger eine perfekte Lösung. Falls Du Fragen hast, oder auch noch eine Verbesserung kennst, dann schreib einen Kommentar. Das kannst du gleich hier unten machen.

Hinterlasse eine Antwort

Deine eMail-Adresse wird nicht veröffentlicht. Pflichtfelder sind mit * markiert.