Kommentar-Spam vs. tantan – Call to undefined function wp_die();

Der Preis des Erfolges eines jeden Blogs scheint der Spam zu sein. Nachdem ich meinen Server nun auch endlich wieder richtig konfiguriert hatte, bekam ich auch wieder die vielen Mails. Google Mail gruppierte diese zwar alle schön, aber es hat mich trotzdem genervt, vor allem weil es so leicht schien, Spam von nicht Spam zu unterscheiden. Nach einer kurzen Suche mit einer Suchmaschine stieß ich auf folgende Seite http://tantannoodles.com/toolkit/spam-filter/. Ich konnte es kaum glauben, das man das Plugin nur installieren mußte und nicht wie beim Captcha wieder in alle möglichen PHP Dateien eintragen mußte.

Nachdem ich es installiert hatte, stand auch gleich der erste Versuch an. Ich kopierte einfach den Spam Text, von dem ich per Mail haufenweise hatte, in das Comment Feld und bekam folgende Fehlermeldung

Fatal error: Call to undefined function wp_die() in wp-content/plugins/tantan/spam-filter.php on line 201

Da machte sich natürlich gleich Ernüchterung breit. Also versuchte ich es mit einem richtigen Kommentar und siehe da, es funktionierte. Jetzt tat sich natürlich der innerliche Konflikt auf, was sollte man tun. Den Fehler so lassen oder nachschauen was da nicht funktioniert. Aber da wir ja hier schließlich beim BugBlog.de sind, dachte ich mir, ich schaue mir den Fehler mal an und mache daraus einen Post, weil anderen ergeht es bestimmt genauso.

Also in der entsprechenden Datei an entsprechender Stelle nachgeschaut und folgendes gefunden

$html .= '<p><a href="javascript:history.back()" style="color:#000;font-size:0.8em;">&lt; go back and edit my comment</a></p>';
$html .= '</form><p>';
wp_die($msg . $html);

Da die Programmierung der Objekt Orientierung gefolgt ist, hätte es eigentlich so lauten müssen:

$this->wp_die($msg . $html);

Dies ergibt aber auch keinen Sinn, weil wir befinden uns bereits in der Methode wp_die und eine Methode die sich nochmal selbst aufruft ohne Abbruchbedingung benötigt den ganzen Speicher und wird somit vom Server beendet. Also blieb nur noch eine Möglichkeit übrig:

die($msg . $html);

Noch kurz gespeichert und schon bekommt der Kommentator die Möglichkeit, seinen Kommentar freizuschalten oder doch nochmal zu überarbeiten.