WordPressを使っていると次第にコメントスパムが増加してきます。
その対策としては、Akismetプラグインを入れることなどが挙げられますが、Akismetだとスパムの判別は出来ても、スパム投稿そのものは防ぐことはできません。その結果、データベースのオーバーヘッドが増加し、サイトのパフォーマンスも低下してきます。
そこで、PHPを使い、コメントが、スパムの特徴であるURL入力している場合、投稿そのものを中止する簡易スクリプトを組んでみました。
wp-content/pluginsディレクトリ内に、stopping_spamsディレクトリを作成します。そして、その中に、次のstopping_spams.phpファイルを新規に作成します。
※お約束ですが、ご利用は自己責任でお願いします。
<?php /* Plugin Name: Stopping Spams Plugin URI: http://webmaster.chielog.com/ Description: For Stopping Spams before Insert to DB Author: webmaster.chielog.com Version: 1.0.0 Author URI: http://webmaster.chielog.com/ License: GPLv2 or later */ //pre_comment_content(コメント本文) //コメント本文がデータベースに保存される前に適用されるフィルター。 add_filter('pre_comment_content', 'stopping_spams'); function stopping_spams($comment_content){ $spam_flag = false; //初期値はfalse //URL欄判定(入力されていればスパムと判定) if (!empty($_POST['url'])) { $spam_flag = true; } //スパム時の処理 if ($spam_flag) { wp_die('comment error.'); //終了 } else { //スパムでなければそのまま返す return $comment_content; } }
コメントが投稿されDBに保存される直前にフィルターフック(pre_comment_content)により、$_POST[‘url’]の入力をチェックし、URLの入力を判定しています。
たった30行程のコードですが、このプラグインを設置することによりスパムが随分と減りました。
以上です。