Ausnahmen für WordPress-Seiten bei der Suchmaschinen-Indizierung

Stellt man eine Website ins Netz, so möchte man im Normalfall, dass diese auch von Suchmaschinen indiziert werden. Verwendet man WordPress, so möchte man aber oft nicht alle erreichbaren Seiten indiziert haben, sondern gewisse Seiten von der Indizierung ausnehmen.

Blogeinträge, aber auch fixe Seiten (WordPress-Pages) sollten wohl meist von Suchmaschinen indiziert werden, sodass diese in den Suchergebnissen erscheinen. Andere Seiten, wie etwa das Impressum, oder die Datenschutzerklärung muss meiner Meinung nach nicht unbedingt ganz oben in den Ergebnissen erscheinen, wenn man gezielt nach seiner Website sucht.

Ich möchte etwa folgende Seiten nicht indiziert haben:

  • Impressum
  • Datenschutzerklärung
  • Kontakt-Seite
  • Kategorie-Seite (alle Beiträge einer bestimmten Kategorie)
  • Tag-Seite (alle Beiträge mit bestimmtem Tag)
  • Autor-Seite (alle Beiträge eines Autors)
  • Anhang-Seite

Besonders die Anhang-Seite von WordPress möchte ich nicht in den Ergebnissen haben. Auf diese wird aber etwa verwiesen, wenn man eine Bildergalerie mit dem WordPress-Plugin „FancyBox“ in einen Beitrag einbettet.

Das Meta-Tag ‚robots‘

Mit folgendem Meta-Tag kann einer Suchmaschine mitgeteilt werden, dass die Seite indiziert werden soll und dass sie die enthaltenen Links weiterverfolgen soll.

<meta name="robots" content="index,follow">

Das Weiterverfolgen macht in den meisten Fällen Sinn, weshalb ich dies auf ‚follow‘ belassen möchte. Mit ’noindex‘ könnte man an dieser Stelle dann das Indizieren „verbieten“ (ob sich eine Suchmaschine daran hält, ist natürlich eine andere Sache).

Bei einer statischen Website, welche aus einzelnen HTML-Dateien besteht, könnte man flexibel jeder Seite das entsprechende Meta-Tag im HEAD-Bereich eintragen. Bei einem dynamischen System, wie etwa WordPress, ist dies nicht möglich. Man muss hierbei auf andere Vorgehensweisen setzen.

WordPress-Plugins für SEO

Es gibt viele WordPress-Plugins, welche sich auf SEO (= Search Engine Optimization) spezialisiert haben und auch die Möglichkeit des Setzens von „index“ / „noindex“ für einzelne Beiträge bieten.

Ich habe das ein oder andere Plugin ausprobiert und konnte nicht die für mich optimale Konfiguration erreichen, eine Kleinigkeit hat stets gefehlt. Dazu sind diese Plugins meist vom Umfang her für meine Zwecke überdimensioniert. Ich habe mich letztlich dazu entschieden, ein eigenes, kleines WordPress-Plugin zu schreiben, welche genau (und nur genau) diese Aufgabe übernimmt.

NoIndexer

Ich habe zuvor noch kein WordPress-Plugin geschrieben und musste mir erst einmal einen Überblick verschaffen, wie ein solches Plugin denn aufgebaut ist und funktioniert.

In diesem Fall ist die Umsetzung tatsächlich extrem einfach, das Plugin hat nicht einmal 30 Zeilen und macht genau das, was ich benötige.

<?php
/*
Plugin Name: NoIndexer
Description: NoIndexer sets the robots meta tag to 'noindex' for specific pages, such as 'author page' and 'attachment page'.
Author: Christoph Imschweiler
Author URI: https://www.wecimo.de
Version: 1.0
*/

if ( !defined('ABSPATH') ) {
    exit; // forbid direct access
}

function setRobotsMetaTag() {
    $indexPage = !is_attachment() && !is_category() && !is_author() && !is_tag()
        && !is_page('impressum') && !is_page('datenschutzerklaerung') && !is_page('kontakt');
    if ( $indexPage ) {
        echo "<meta name=\"robots\" content=\"index,follow\">";
    } else {
        echo "<meta name=\"robots\" content=\"noindex,follow\">";
    }
}
add_action('wp_head', 'setRobotsMetaTag');

?>

Jedes WordPress-Template sollte folgenden Code im HEAD-Bereich besitzen:

<?php wp_head(); ?>

Ohne diesen Code funktionieren die meisten WordPress-Plugins nicht und auch WordPress selbst benötigt ihn für einige Dinge. Hier werden etwa weitere JavaScript- und CSS-Dateien eingebunden, Meta-Tags gesetzt und … moment, genau das, was wir an dieser Stelle benötigen.

Mit „add-action“ kann man sich in diesen Code einhängen und etwa weitere Meta-Tags einfügen. Der 2. Parameter gibt dann eine PHP-Function an, welche zusätzlich aufgerufen wird, sobald der „wp_head()“-Aufruf bearbeitet wird.

Diese Function definiert man selbst, sie steht im Code direkt darüber. Darin habe ich alle Bedinungen aufgelistet, welche wahr sein müssen, damit die Indizierung erfolgen soll. WordPress stellt dazu etliche Funktionen bereit, um erkennen zu können, auf welchem Typ ‚Seite‘ man sich aktuell befindet. Im Falle der Function „is_page()“ habe ich hier als Parameter den Page-Name angegeben, welcher  ebenfalls aus der Indizierung ausgenommen werden soll. Das ist entsprechend anzupassen, wenn man seine eigenen Seiten ausnehmen möchte.

Mit „echo“ wird dann anschließend nur noch eine der beiden Varianten ausgegeben.

Plugin konfigurieren

Dieses Plugin ist natürlich jetzt nicht sehr flexibel. Möchte man weitere Seiten aufnehmen, so muss man den PHP-Code entsprechend anpassen und die Datei neu hochladen.

Es ist aber hier ebenfalls denkbar, eine eigene Konfigurationsseite im Adminbereich von WordPress zu erstellen, welche z.B. Checkboxen zur Auswahl der „Spezial-Seiten“, wie Attachment-Pages, anbietet. Zudem könnte man die WordPress-Pages auflisten, sodass man hier je Seite die Indizierung ein- und ausschalten kann.

Schreibe einen Kommentar