WordPressのコメントスパム対策まとめ|初心者でもできる安全設定
WordPressを運営していると、突然海外から大量のスパムコメントが届き始める場合があります。
特に初期状態のままコメント機能を有効にしていると、URL付きスパム、BOT投稿、英語スパムなどの対象になりやすいです。
また、放置するとサイト管理負担が増えるだけでなく、SEOやセキュリティ面でも悪影響へ繋がる可能性があります。
本記事では、WordPress初心者向けに、コメントスパム対策方法を分かりやすく解説します。
なぜコメントスパムが来るのか?
WordPressは世界中で利用されている人気CMSです。
そのため、自動BOTによるスパム投稿対象にもなりやすい特徴があります。
特に以下のようなコメントは典型的なスパムです。
- 英語だけのコメント
- URL入りコメント
- 意味不明な短文
- 海外SEOリンク誘導
- 自動生成文章
これらはBOTが自動投稿しているケースも多く、放置すると大量発生する場合があります。
WordPress標準コメント設定を見直す
まずは、WordPress標準設定を見直すのがおすすめです。
WordPress管理画面の「設定 → ディスカッション」から変更できます。
特に以下はおすすめです。
- コメント承認を必須にする
- URL数制限を設定する
- ブラックリスト設定を行う
- 古い記事コメントを停止する
初期状態のままより、かなりスパムを減らしやすくなります。
日本語を含まないコメントを拒否する
日本語サイトでは、海外スパムの多くが英語だけで投稿されます。
そのため、日本語を含まないコメントを拒否すると、かなり効果が出る場合があります。
functions.phpへ以下コードを追加する方法があります。
// 日本語を含まないコメントを拒否
function my_reject_comment_without_japanese( $commentdata ) {
if ( ! preg_match( '/[ぁ-んァ-ン一-龥]/u', $commentdata['comment_content'] ) ) {
wp_die( '日本語を含まないコメントは投稿できません。' );
}
return $commentdata;
}
add_filter( 'preprocess_comment', 'my_reject_comment_without_japanese' );
特に日本語サイトではかなり有効な場合があります。
URL入りコメントを拒否する
スパムコメントは、外部サイトURLを貼り付けるケースが非常に多いです。
そのため、URL入りコメント自体を拒否する方法もあります。
// コメント本文にURLが含まれていたら拒否
function my_reject_comment_with_url( $commentdata ) {
if ( preg_match( '/https?:\/\/|www\.|\.com|\.net/i', $commentdata['comment_content'] ) ) {
wp_die( 'コメントにURLを含めることはできません。' );
}
return $commentdata;
}
add_filter( 'preprocess_comment', 'my_reject_comment_with_url' );
SEOスパム系コメント対策としてかなり効果があります。
短すぎるコメントを拒否する
BOTスパムでは、「Good」「Nice」など極端に短いコメントも多いです。
そのため、最低文字数制限を入れる方法もあります。
// 短すぎるコメントを拒否
function my_reject_short_comment( $commentdata ) {
$content = trim( wp_strip_all_tags( $commentdata['comment_content'] ) );
if ( mb_strlen( $content, 'UTF-8' ) < 10 ) {
wp_die( 'コメント本文が短すぎます。10文字以上で入力してください。' );
}
return $commentdata;
}
add_filter( 'preprocess_comment', 'my_reject_short_comment' );
意味のない短文スパムを減らしやすくなります。
reCAPTCHAを導入する
Google reCAPTCHAを導入すると、自動BOT対策としてかなり効果があります。
特にContact Form 7と組み合わせるケースが多いです。
最近ではreCAPTCHA v3を使うサイトが増えています。
ただし、設定ミスがあると正常ユーザーまで弾く場合があるため注意が必要です。
コメント機能を完全停止する方法
そもそもコメントを使わないサイトでは、完全停止するのもおすすめです。
コメントをOFFにしても、直接POST送信されるケースがあるため、functions.php側制御も行うと安全です。
// コメント機能を完全停止
add_filter('comments_open', '__return_false', 20, 2);
add_filter('pings_open', '__return_false', 20, 2);
// 既存コメント非表示
add_filter('comments_array', '__return_empty_array', 10, 2);
ブログ方針によっては、最初からコメントを使わない運営もあります。
Akismetは必要?
AkismetはWordPress標準搭載されるスパム対策プラグインです。
自動判定でスパムを減らせる反面、商用利用条件などもあるため、利用前に確認がおすすめです。
最近では、functions.php側対策だけで十分運営できるケースもあります。
コメントスパム対策は組み合わせが重要
WordPressのスパム対策は、「1つだけ」で完璧に防げるわけではありません。
以下のように組み合わせると、かなり効果が出やすいです。
- 日本語制限
- URL制限
- reCAPTCHA
- コメント承認制
- 短文制限
- 不要なら完全停止
特に日本語サイトでは、日本語制限だけでもかなり減るケースがあります。
まとめ
WordPressは人気CMSのため、コメントスパム対象になりやすい特徴があります。
そのため、初期段階からコメントスパム対策を行っておくことが重要です。
特に日本語サイトでは、日本語制限・URL制限・reCAPTCHAなどを組み合わせることで、かなりスパムを減らしやすくなります。
また、コメントを使わない場合は、最初から完全停止するのも安全な方法の一つです。