WordPress: Nachricht bekommen, wenn jemand die Suchfunktion benutzt

Benutzt eigentlich jemand die WordPress interne Suche? Und nach welchen Inhalten wird das eigene Blog durchsucht? Dieses kleine PHP-Script schickt an den Administrator eine sofort E-Mail, wenn ein Besucher die Suchfunktion benutzt.

Michael Jendryschik bietet in seinem überaus lesenswerten Artikel zu individuellen Fehlerseiten ein Script an, dass den Administrator bei Fehlermeldungen des Servers informiert. Mit ein paar kleinen Änderungen kann man dieses Script auch in sein WordPressblog einbauen und sich über die Benutzung der internen Suchfunktion von WordPress informieren lassen.

Das Script

<?php

// 1. Adresse, an welche die E-Mail versendet werden soll
$empfaenger = "deineemail@adres.se";
$betreff = "Neue Suchanfrage auf www.deinedomain.de";

// 2. Nachricht zusammenbauen.
$message = "Auf der Website wurde die interne Suche benutzt.\n\n";
$message .= "Aufgerufene Ressource:\n";
$message .= "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]."\n\n";
$message .= "User-Agent:\n";
$message .= $_SERVER["HTTP_USER_AGENT"];
if($_SERVER["HTTP_REFERER"] != "") {
$message .= "\n\nAufgerufen von der Adresse:\n";
$message .= $_SERVER["HTTP_REFERER"]; }

// 3. Header-Informationen
$header = "From: Benachrichtigung Suche <info@" . $_SERVER["SERVER_NAME"]."-->\n";
$header .= "Content-Type: text/plain";

// 4. Mail zusammenstellen und absenden
@mail($empfaenger, $betreff, $message, $header);
?>

Der PHP-Code selber ist in vier Teile aufgeteilt:

  1. In diesem Teil wird definiert, wohin die Benachrichtigung geschickt werden soll.
  2. Dies ist der entscheidende Teil des Benachrichtigungsscripts. Hier wird wird mit dem Abschnitt
    $message .= "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]."\n\n";

    die angefragte Suchseite mit den Suchbegriffen ausgegeben. Bereits anhand dieser URL sollten die Suchbegriffe deutlich werden. Ansonsten muss man die Seite halt selber aufrufen, sofern dort auch die Suchbegriffe selber angezeigt werden.
    Mit dem Teil

    if($_SERVER["HTTP_REFERER"] != "") {
    $message .= "\n\nAufgerufen von der Adresse:\n";
    $message .= $_SERVER["HTTP_REFERER"]; } wird zudem noch abgefragt, auf welcher Seite die Suche gestartet wurde.
  3. Dieser Teil definiert die Absenderinformationen für die Benachrichtigungs-E-Mail.
  4. Und wird die E-Mail zusammengesetzt und gesendet.

Anpassen

Im ersten Teil musst du zwei Einträge ändern. Statt deineemail@adres.se musst du deine E-Mail-Adresse eintragen. Und auch www.deinedomain.de solltest du ändern, aber es ist nur eine kosmetische Änderung.

Einbinden in WordPress

Damit das Script leicht eingebunden werden kann, braucht dein WordPress-Theme ein eigenes Template für Suchergebnisse. Die meisten WordPress-Themes sollten ein solches Template haben, auch das mit WP 3.0 mitgelieferte Twenty Ten bringt eine search.php mit.

Dort bringt man am Ende des Templates das obige PHP-Script unter. Vor diesen zwei abschließenden Zeilen ist es am Besten untergebracht:

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Aber …

Für ein kurzzeitiges Monitoring eignet sich die E-Mail-Benachrichtigung gut. Längerfristig sollte man für sein WordPress-Blog ein vernünftiges Statistik-Tool benutzen, mit dem auch ein Monitoring der internen Suchfunktion möglich ist.