Webサイトのお困りごとはこちらへ

【WordPress】コメント欄を日本語を含まないと弾くスパム対策

ハシビィくん

WordPressサイトでコメント欄を有効活用したいんすけど、スパムコメントが多くって困るっす!

カピーさん

スパム対応で時間を使うのは勿体無いもんな。サクッと対応策を紹介していくぞ。

WordPressサイトでコメント欄を開放していると、必ず出てくる「スパム」。有益な交流や思いがけない視点からの質問ということで、可能なら開放しておきたいコメント欄。

しかし、コメント欄を開放していると届く数多くのスパムコメント。削除は簡単ですが、面倒なことには変わりません。でも開放しておきたいという人向けの方法を紹介!

今回紹介する方法は、プラグインを使用しません。その代わりバックアップなどWordPressの基礎知識は必要な内容になっていますのでご注意を。

目次

スパムコメントを弾くコード

下記コードは、funciton.phpに貼り付け保存してください。

事前にバックアップのご用意をお願いいたします。

// コメントのスパム対策
add_filter('preprocess_comment', function ($commentdata) {
  $comment_content = $commentdata['comment_content'];

  $is_spam = false;
  if (strlen(bin2hex($comment_content)) / 2 === mb_strlen($comment_content)) { // 日本語を含むか簡易チェック
    $is_spam = true;
  }

  if ($is_spam) {
    wp_die(
      '<p><strong>Error</strong>: 日本語が含まれていません。</p>',
      __('Comment Submission Failure'),
      array(
        'back_link' => true,
      )
    );
  }

  return $commentdata;
}, 2);
function reject_non_japanese_comments($commentdata) {
    // コメントの内容を取得
    $comment_content = $commentdata['comment_content'];

    // 日本語の文字が含まれていない場合はコメントを拒否
    if ( ! preg_match('/[ぁ-んァ-ン一-龯]/u', $comment_content) ) {
        wp_die('コメントには日本語を含めてください。');
    }

    return $commentdata;
}

// コメントの検証をフックに追加
add_filter('preprocess_comment', 'reject_non_japanese_comments');

コメント内容が日本語(ひらがな、カタカナ、漢字)の文字を含んでいるかどうかをチェックする正規表現になっています。

日本語が含まれていない場合は、wp_die() 関数を使ってエラーメッセージを表示し、コメント投稿を拒否します。

レンタルサーバーによっては対策も完備

エックスサーバーなどの大手レンタルサーバーによっては、今回の方法を導入せずともスパム対策として国外からの黒メントを弾いてくれたりもします。

ですが、それでもスパムが届く場合もまだまだあります。

その場合に今回紹介したコードを使ってみてください。

まとめ:コメント欄を日本語を含まないと弾くスパム対策

今回はスパム対策(英字)の対応策を紹介していきました。これで大多数のスパムを弾くことができます。

しかし今後はAIを活用した日本語でのスパムコメントやSNSへの誘導を促すコメントも増えてくることが予想されます。その際にはまた紹介していきます。

コメント欄を日本語を含まないと弾くスパム対策
  • 日本語を含まないコメントを自動でブロックできる
  • プラグイン不要で軽量な運用が可能
  • バックアップ必須、サーバー機能も併用すると安心
この記事をシェアする

コメント(承認制)

コメントする

目次