WordPress Seiten von Suche ausschließen (ohne Plugin)

Sie möchten einzelne WordPress-Seiten bzw. -Pages gezielt von der Suche ausschließen? Kein Problem. Dafür brauchen Sie nur ein paar Code-lines.

Warum sollte ich Seiten von der WordPress-Suche ausschließen?

Eine aktuelle Kunden-Website arbeitet mit Mailing-Listen und der Distribution von digitalen Produkten. Infolge dessen gibt es Bestätigungsseiten bei erfolgter Newsletter-Anmeldung oder Seiten, die den Bezahlprozess begleiten. Selbige können (und sollten) ohnehin mittels SEO-Plugin vom Bot-Zugriff ausgelistet werden (noindex, nofollow, noarchive) – selbiges verhindert aber nicht, dass diese individuellen Seiten bei einer WordPress-internen Suche auftauchen.

Seiten von der WordPress-Suche ausschließen
Nicht jede WordPress-Seite soll in der Suche auftauchen

1. Sicherheit
In der Regel geben diese (Zwischen-)Seiten zwar keine relevanten Informationen oder Interna preis. Je nach Setup kann es aber passieren, dass der User über die WordPress-Suche auf eine fortgeschrittene Payment-Seite gelangt, die Ihm den Download ermöglicht. Ein Schelm wer Böses denkt? Ich könnte es dem (glücklichen) Besucher nicht verdenken, wenn selbiger daraus Vorteil zieht. Schließlich liegt es in der Hand des Betreibers, hier die richtigen Schranken einzubauen bzw. solche Lücken zu schließen.

2. Relevanz
Neben den Sicherheitsaspekten (im Sinne des Website-Betreibers) stellt sich auch die Frage nach der Relevanz der Such-Ergebnisse, wenn dort fünf WordPress-Seiten auftauchen, die lediglich als Bestätigungsseiten oder Zwischenschritte eingerichtet sind. Und auch wenn man schließlich zum gewünschten Inhalt gelangt ist – es bleibt ein fahler Nachgeschmack im Sinne der Usability.

Wie schließe ich Seiten von der WordPress-Suche aus?

Dieser Code fügt einen globalen Search-Filter hinzu. Die individuellen Seiten werden hier als array (nach IDs) ausgeschlossen.

/* SEITEN VON DER WORDPRESS-SUCHE AUSSCHLIESSEN */

function js_search_filter( $query ) {
     	if ( $query->is_search ) { 
			$query->set('post__not_in', array(1,2,3) ); 
		}
     	return $query;
	}
	add_action( 'pre_get_posts', 'js_search_filter' );

Der Code gehört in die functions.php, die sich im Theme-Ordner ([…]/wp-content/themes/) befindet. Einfach Copy & Paste, testen nicht vergessen.

Die jeweiligen Seiten-, Post- bzw. Kategorie-IDs sind mitunter nicht einfach zu ermitteln. Im Backend kann man sich zwar mit einem Mouse-Hover behelfen und dem angezeigten Link die ID entlocken – ich bin aber großer Fan des „Reveal IDs“-Plugins, welches eine Spalte mit Identifikationsnummer in der entsprechenden Rubrik hinzufügt.

WordPress-Suche – Alternativen zur Customization für Posts, Kategorien, etc.

Natürlich kann man diese Funktion auch editieren und mittels der zur Verfügung stehenden Variablen für den Ausschluss von Kategorien, Posts usw. verwenden. Der Code verändert sich nur geringfügig, man tauscht die entsprechenden Zeilen in der obigen Anleitung einfach aus. Hier also einige Beispiele:

A) Nur Artikel/Posts in der Suche anzeigen

$query->set('post_type', 'post'); }

B) Nur Frontend-Zugriffe bearbeiten, Admin Such-Zugriff wird nicht beeinträchtigt

if (!$query->is_admin && $query->is_search) {

C) Einzelne Kategorien von der WordPress-Suche ausschließen

$query->set('cat','-123,-456');

Das (-) sorgt für den Ausschluss der Kategorien aus der Suche. Man kann invers arbeiten und ohne negatives Vorzeichen ausschließlich Artikel aus der Kategorie 123 anzeigen lassen.

D) Es sind auch Kombinationen möglich

$query->set('post_type','post');
$query->set('cat','-143');

In diesem Beispiel wird die WordPress-Suche zuerst auf die Ausgabe von Artikeln/Posts beschränkt, im zweiten Schritt werden noch einzelne Kategorien ausgeschlossen.

Weiterführende Links zum Thema WordPress-Suche

5 Reaktionen auf “WordPress Seiten von Suche ausschließen (ohne Plugin)”

  1. Chris

    Super, genau dies benötige ich für meinen Shop, wo nur Artikel gesucht werden können.

    Antworten
  2. Chris

    Super, genau dies benötige ich für meinen Shop, wo nur Artikel gesucht werden können.

    Antworten
  3. Projektmanagement24

    Danke für den Hinweis. Was passiert, wenn ich ein WordPress Update durchführe? Bleiben die Einstellungen erhalten?

    Antworten
    • E-VANCE

      Ein Update hat keine Auswirkungen da die Einstellungen bzw. der Filter
      in der functions.php im Theme selbst liegen und dort nicht überschrieben
      werden – außer natürlich von einem möglichen Theme-Update, in dem Fall
      bitte ein Child-Theme nutzen…

      Antworten
  4. Naddy

    Vielen Dank für diesen hilfreichen Beitrag! Funktioniert alles super! 🙂

    Antworten

Hinterlasse eine Antwort