コメントスパムを自動でブロックする方法
目次
WordPressのコメントフォームは便利ですが、スパムコメントが多くなると管理が大変です。ここでは、
- コメントスパムを自動で判定・ブロックする方法
- IP制限を追加して特定ユーザーを拒否する方法
を紹介します。
1 実装のポイント
- functions.php にコードを追加してコメント送信前に判定
- 特定の単語やURLを含むコメントを自動で拒否
- 特定IPからの投稿をブロック可能
- JavaScriptによる簡易チェックでフォーム送信前に警告も可能
2 functions.php にコードを追加
//-------------------------------------------
// コメントスパムを自動ブロックする例
//-------------------------------------------
add_filter('preprocess_comment', function($commentdata) {
// スパムワードリスト
$spam_words = array('viagra','casino','http://');
foreach($spam_words as $word) {
if(stripos($commentdata['comment_content'], $word) !== false){
wp_die('スパムコメントと判定されました。');
}
}
// 特定IPをブロック
$blocked_ips = array('123.45.67.89','111.222.333.444');
$user_ip = $_SERVER['REMOTE_ADDR'];
foreach($blocked_ips as $blocked){
$pattern = '/^' . str_replace('\*', '.*', preg_quote($blocked, '/')) . '$/';
if(preg_match($pattern, $user_ip)){
wp_die('あなたのIPからのコメントは拒否されました。');
}
}
return $commentdata;
});
補足:
$spam_words = array('viagra','casino','http://');のスパムワードは必要に応じて追加してください。$blocked_ips = array('123.45.67.89','111.222.333.444');はワイルドカード(例:123.45.67.*)を使ってIP範囲を拒否可能です。- 動的IPやプロキシ経由では正確にブロックできない場合があります。
3 javascript にコードを追加
ファイル名:spam-block.js
保存先:wp-content/themes/child-theme/js/spam-block.js
//-------------------------------------------
// 簡易チェック例(フォーム送信前)
//-------------------------------------------
document.addEventListener('DOMContentLoaded', function(){
var commentForm = document.getElementById('commentform');
if(commentForm){
commentForm.addEventListener('submit', function(e){
var comment = document.getElementById('comment').value;
if(comment.indexOf('http://') !== -1 || comment.indexOf('viagra') !== -1){
alert('スパムと思われる内容が含まれています。');
e.preventDefault();
}
});
}
});
3.1 ディレクトリ構造
- child-theme/
- style.css
- functions.php
- footer.php
- header.php
- js/
- spam-block.js
- images/
- logo.png
4 完成イメージ
4.1 スパムと判定されました。

4.2 あなたのIPからのコメントは拒否されました。

5 代用プラグイン
プラグインを使う場合は、Akismet Anti-Spam や WP SpamShield などを利用すると、より精度高くスパムをブロックできます。
6 まとめ
functions.php に少しのコードを追加するだけで、コメントフォームのスパム対策を自動化できます。IP制限やキーワード判定を組み合わせることで、管理負担を大幅に減らせます。プラグインと併用するとさらに安全です。


