Wenn Du ähnlich arbeitest wie ich, wirst Du wahrscheinlich in der Liste Deiner Beiträge oder Seiten den einen oder anderen Titel haben, der auf keinen Fall für die Augen der Öffentlichkeit gedacht ist. Solche Beiträge verwende ich beispielsweise zum Testen von Plugins oder von selbst geschriebenen PHP-Ergänzungen, deren Funktion ich auf Herz und Nieren prüfen will, bevor ich sie danach tatsächlich auf öffentlichen Seiten einsetze. Derartige Testbeiträge verlinke ich auf keiner anderen Seite, damit auch keiner meiner Besucher auf solchen Dummy-Seiten landet.
Problematisch dabei ist jedoch, dass die eingebaute WordPress-Suche in ihren Ergebnissen auch solche nicht verlinkte Seiten anzeigt. Die Frage ist also:
Wie kann man bestimmte Beiträge aus den WordPress-Suchergebnissen ausblenden?
Du könntest solche Beiträge in den Einstellungen zur Sichtbarkeit als Privat kennzeichnen. Dann wären sie für nicht angemeldete Besucher nicht erreichbar. Und sie würden dann auch nicht in der internen Suche aufgeführt werden. Aber tatsächlich ist Sinn und Zweck meiner Tests ja gerade das Ausprobieren von Inhalten aus der Sicht meiner Besucher. Also möchte ich meine Testseiten aus Suchergebnissen ausblenden. Wie geht das?
Mit einem PHP-Dreizeiler ist das ganz einfach. Lade dazu aus dem Serververzeichnis Deines aktiven Themes die Datei functions.php mit Hilfe eines FTP-Programms auf Deinen PC herunter und öffne sie mit mit einem Texteditor. An das Ende dieser Datei, fügst Du vor der letzten Zeile ?>
den folgenden Programmcode ein:
/* Einzelne Seiten aus der WordPress-Suche ausschließen: */
function wpf_exclude_from_search( $query ) {
if ( $query->is_search ) {
$query->set( 'post__not_in', array( 301, 302, 303, 304 ) );
}
return $query;
}
add_filter( 'pre_get_posts', 'wpf_exclude_from_search' );
Die Zahlen 301 bis 304 stehen hier beispielhaft für Nummern, die WordPress automatisch beim Anlegen von Texten vergibt. Die zu einem Text gehörende Nummer findet man in der Liste der Seiten oder Beiträge, wenn man mit der Maus über Bearbeiten fährt. Dann sieht man im Browserfenster (meist ganz unten links) die Ziel-Adresse, auf der man landen würde, wenn man nun klickt. In dieser Zieladresse findest Du die Sequenz …?post=xx…
. Anstelle von xx steht dort die Beitragsnummer, die Du statt 301 bis 304 in den PHP-Code einfügen musst.
Du siehst, mit Hilfe dieser Funktion kann man beliebig viele Beiträge aus den Suchergebnis entfernen. Du könntest also beispielsweise auch alle rein organisatorische Seiten – wie etwa Impressum oder Datenschutzerklärung – aus den Suchergebnissen Deiner Websitegäste heraushalten.
Randnotiz: Wie man bestimmte Seiten aus den öffentlichen Google-Suchergebnissen heraushält, beschreibe ich in einem separaten Beitrag.
Sobald Du fertig bist, lädst Du die abgeänderte Datei functions.php mit dem FTP-Programm von Deinem PC wieder hoch in das Themeverzeichnis auf Deinem Webserver.
Vorsicht: Beachte beim Bearbeiten und Hochladen unbedingt meine Hinweise im Beitrag zum Child-Theme. Denn mit der nächsten Aktualisierung des installierten Standardthemes werden alle Inhalte der Datei functions.php dort wieder durch die Standardinhalte überschrieben. Das kannst Du verhindern, indem Du ein Child-Theme anlegst und alle permanenten Änderungen dort einträgst.