Antispam Bee und die WordPress-Blocklist kontrollieren

Niemand mag Kommentarspam. Aber es mag auch niemand „false positives“, also als Spam erkannte Kommentare, die in Wirklichkeit gar kein Spam sind. Daher sollte gelegentlich geprüft werden, ob die Komponenten alle noch korrekt miteinander laufen. Und da lauern immer mal wieder spannende Herausforderungen …

Zum einen wird die Blacklist in der nächsten WordPress-Version Blocklist heißen, um so die unpassende Sprachwahl zu verbessern. Aus diesem Grund ändert sich auch der Name der entsprechenden Option, von blacklist_keys zu blocklist_keysdisallowed_keys.

Das ist insbesondere für das Antispam Bee Zusatzplugin „Backlist Updater„-Plugin relevant. Dessen Name nun natürlich ebenfalls auf dem Prüfstand steht und es muss überhaupt an die neue Option angepasst werden. Vielleicht ist aber auch für die mal geplante Integration in Antispam Bee jetzt eine gute Gelegenheit.

Die Synchronisierung hat aber noch ein anderes, größeres Problem, wie ich finde. Natürlich ist es schön einfach, wenn es eine kuratierte Liste an Wörtern gibt, die geblockt werden sollen. Nun gibt es aber in WordPress nur die Moderationsliste und die Blockliste. Erstere schickt die Kommentare in die Moderation und letztere in den Papierkorb. Keine der beiden Optionen ist praktisch für Antispam Bee. Für jeden Kommentar in der Moderation bekomme ich eine Benachrichtigung, die ich bei Spam sicher nicht haben möchte. Die Kommentare direkt in den Papierkorb zu schicken ist aber auch doppelt ungünstig. Zum einen habe ich nun eine Deadline von standardmäßig 30 Tagen bis sie endgültig weg sind und zum anderen helfen sie so Antispam Bee nicht über die lokale Spam-Datenbank. Zusätzlich muss bedacht werden, dass diese Listen auch den User Agent betreffen. Bisher undokumentiert, aber schon sehr lange der Fall …

Es wäre also viel praktischer, wenn die Blockliste den Kommentar in den Spam schicken würde. Erst dachte ich, dass dies nicht möglich ist, aber es war dann doch ganz einfach. Über den pre_comment_approved Filter-Hook kommt nur dann der String „trash“ zurück, wenn ein Kommentar durch die Blockliste aussortiert wurde. Das lässt sich einfach auf „spam“ stellen. So landet der Kommentar im Spam, hilft der lokalen Spam-Datenbank und kann typischerweise länger geprüft werden, um false positives wieder aus dem Spam zu holen.

Denn die Liste hat es durchaus in sich. Da es reicht, wenn ein Wortteil existiert, dürfte die Gefahr von false positives gegeben sein. Es reicht ein „erotik“ oder ein Tippfehler wie „facebok“ und schon landet der Kommentar im Nirwana. Wer dann nicht zufällig mal den Papierkorb durchschaut, der verliert schnell einen Kommentar.

Genug auf die Folter gespannt. Hier ist der Code:

/**
 * Comments blocked by the blocklist should be spam and not trash.
 *
 * @param int|string|WP_Error $approved    The approval status. Accepts 1, 0, 'spam', 'trash', or WP_Error.
 * @param array               $commentdata Comment data.
 * @return int|string|WP_Error             The approval status. Accepts 1, 0, 'spam', 'trash', or WP_Error.
 */
function move_blocklist_from_trash_to_spam( $approved, $commentdata ) {
	// If the approval status is trash, then change to spam.
	if ( 'trash' === $approved ) {
		$approved = 'spam';
	}

	return $approved;
}
add_filter( 'pre_comment_approved', 'move_blocklist_from_trash_to_spam', 10, 2 );

Das komplette Plugin nochmal als Gist.

Ich schaue mal, ob ich das vielleicht in das Plugin oder sogar Antispam Bee integrieren kann. Dann könnte zusätzlich noch ein Spamgrund mitgespeichert werden. Über den zweiten Parameter wird die Kommentar-ID ja mitgesendet, so dass der Kommentar ergänzt werden kann.

Findest du diese Änderung praktisch? Nutzt du die Blacklist von WordPress überhaupt? Nutzt du den Blacklist Updater oder lieber den Comment Blacklist Updater oder den Comment Blacklist Manager?

Ich freue mich über Feedback in den Kommentaren!

5 Antworten auf Antispam Bee und die WordPress-Blocklist kontrollieren

  1. Landen dann nicht aber auch alle Kommentare die ich im WP Admin Bereich von Hand lösche im Spam?

    • Nein, tun sie nicht. Wir sind ja im Kontext des pre_comment_approved Hooks, also bei der Prüfung des Kommentars. Wenn gelöscht (bzw. in den Papierkorb verschoben) werden soll, wird dieser Kontext aber gar nicht durchlaufen.

  2. Sehr spannend! Könnte man über $commentmeta auch noch eine Information zum Kommentar hinterlegen, dass der entsprechende Kommentar durch diesen Filter in den Spam geschoben wurde? Oder würde das beispielsweise Antispam Bee ohnehin schon machen?

  3. Pingback: WordPress 5.5 und mein kleiner Beitrag dazu › Torsten Landsiedel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.