Zum Inhalt springen
Termin vereinbaren (öffnet in einem neuen Fenster)

WordPress-Suchfunktion deaktivieren

Ein Schnipsel für die Fälle, in denen die eingebaute Suche mehr stört als hilft – ohne die Suche im Verwaltungsbereich mit abzuschalten.

Zuletzt geprüft: 4 Minuten Lesezeit

Wofür das gut ist

WordPress bringt eine Suche mit, ob man sie will oder nicht. Bei einer Firmenwebsite mit zwölf Seiten stört sie eher: Sie liefert magere Ergebnisse, und Besucher sollen ohnehin über das Menü gehen.

Dazu kommt ein praktischer Grund: Suchergebnisseiten erzeugen endlos viele Adressen, und automatisierte Anfragen an /?s=... gehören zu den häufigsten Serverbelastungen bei kleinen Websites.

Der Schnipsel

add_action( 'parse_query', function ( $query ) {

    // Nur im Vorderbereich und nur die Hauptabfrage.
    // Ohne diese Prüfung waere auch die Suche in der WordPress-
    // Verwaltung abgeschaltet - und ohne die findet man in einer
    // gewachsenen Website nichts mehr.
    if ( is_admin() || ! $query->is_main_query() ) {
        return;
    }

    if ( $query->is_search ) {
        $query->is_search = false;
        $query->set( 's', '' );
        $query->is_404    = true;
    }
} );

// Entfernt das Suchformular, falls das Theme eines ausgibt.
add_filter( 'get_search_form', '__return_empty_string' );

Aufrufe von /?s=irgendwas landen danach auf der Fehlerseite, und das Suchfeld verschwindet.

Warum ältere Anleitungen die Website lahmlegen

Wichtig

In vielen Anleitungen steht für diese Aufgabe ein Schnipsel mit create_function(). Diese Funktion ist seit PHP 7.2 abgekündigt und in PHP 8 entfernt. Wer den Code heute einsetzt, bekommt eine weiße Seite – auch im Verwaltungsbereich.

Ebenso verbreitet ist $query->query_vars[s] ohne Anführungszeichen um das s. In PHP 7 war das eine Warnung, in PHP 8 ebenfalls ein schwerwiegender Fehler.

Beides erkennt man von außen nicht – die Anleitung sieht seriös aus und war es zu ihrer Zeit auch. Der Schnipsel oben ist gegen PHP 8 geprüft.

Wohin der Code gehört

Tipp

Nicht in die functions.php deines Themes. Beim nächsten Theme-Update ist er weg – ohne Vorwarnung und ohne dass jemand merkt, warum die Suche plötzlich wieder da ist.

Richtig sind zwei Orte: ein Child-Theme, oder ein Code-Plugin wie „Code Snippets" oder „WPCode". Bei einem Plugin lässt sich der Schnipsel außerdem mit einem Schalter abschalten, wenn er Ärger macht.

Und vorher: eine Sicherung anlegen. Ein Tippfehler in PHP-Code hat dieselbe Wirkung wie ein Tippfehler in der .htaccess – die Seite ist weg.

Geht es auch ohne Code?

Für den häufigsten Wunsch – „das Suchfeld soll weg" – reicht oft schon die Gestaltung: Suchfeld aus dem Menü und aus der Seitenleiste entfernen, fertig. Die Suche bleibt dann technisch erreichbar, aber niemand stolpert darüber.

Der Schnipsel oben ist die gründlichere Fassung: Er schaltet die Funktion selbst ab, nicht nur ihre Anzeige.

Anrufen Website prüfen Anfragen

Darstellung

Diese Einstellungen gelten nur auf diesem Gerät und werden lokal in deinem Browser gespeichert. Es wird nichts übertragen.

Farbschema
Schriftgröße
Lesbarkeit
Erklärung zur Barrierefreiheit