WordPressでコメント欄を使用する際やアドセンス審査のためにお問い合わせフォームを用意することはよくあります。
その時に同時に考えないといけないのがスパム対策です。スパム対策は「Akismetがあるから大丈夫」と思っていませんか?
広告を貼っているとAkismetは無料で利用できなくなります。
無料版のAkismetは「広告を貼らない・商品を販売しない・商売の宣伝をしない」という利用規約があります。アドセンスやアフィリエイト広告を利用する場合は別の方法が必要です。
アフィリエイト等で商用利用したい場合は有料プランを選んでください。
しかし有料で利用したい人はかなり少ないと思います。
この記事ではAkismetの代わりとなるスパム対策方法を紹介していきます。
Akismet Personalは商用利用できない
Akismetの無料プランである「Akismet Personal」は商用利用できません。アフィリエイトやアドセンス広告と併用できなくなります。
Akismet Personal契約時の規約に以下の項目があります。
- I don’t have ads on my site.
- 自サイトに広告を貼っていません。
- I don’t sell products/services on my site.
- 自サイトで商品やサービスを売りません。
- I don’t promote a business on my site.
- 自サイトで商売の宣伝をしません。
上記の通り、明確に商用利用が禁止されています。
例えば、アドセンスの審査にまだ通っていなくて広告を貼っていないのであれば使用できますが、審査に通った後も使用していると規約違反になってしまいます。
アフィリエイト広告を貼っているなら最初から利用できません。
実際には、ほとんどの人が広告を貼るのでAkismetは有料になります。
無料で使いたい場合は他の方法を探さなければいけません。
以下では、Akismetの代わりとなる無料で使えるスパム対策を紹介します。
スパム対策が必要になる状況は「Contact Form 7を使ったお問い合わせフォームを設置している」と「コメント欄を使用している」場合の2つです。
Contact Form 7を使っている場合のスパム対策
- お問い合わせフォームにチェックボックスを追加する
- 日本語のない文章をブロックする
- Contact Form 7のクイズ機能を使用する
- reCAPTCHAを使用する
コメント欄を使用している場合のスパム対策
- Throws SPAM Away
Akismetの代わりになるスパム対策(Contact Form 7)
Contact Form 7を使っている場合のスパム対策を紹介します。
- お問い合わせフォームにチェックボックスを追加する
- 日本語のない文章をブロックする
- Contact Form 7のクイズ機能を使用する
- reCAPTCHAを使用する
お問い合わせフォームにチェックボックスを追加する
メッセージの送信時に確認用のチェックボックス(承諾確認)を追加する方法を紹介します。
メッセージはチェックを入れないと送信できません。スパム対策としては効果が弱いですが誤送信の対策にもなるので追加しておくと便利です。
お問い合わせ > コンタクトフォーム名でフォームの編集画面を開いて次のコードを追加します。
[acceptance acceptance-001] 利用規約に同意します。 [/acceptance]
追加する場所は、[submit “送信”]の上です。
<label> 氏名
[text* your-name] </label>
<label> メールアドレス
[email* your-email] </label>
<label> 題名
[text* your-subject] </label>
<label> メッセージ本文 (任意)
[textarea your-message] </label>
[acceptance acceptance-001] 利用規約に同意します。 [/acceptance]
[submit "送信"]
これで承諾確認のチェックボックスが追加されました。
文章は好きなように変更してください。
日本語のない文章をブロックする
題名・メッセージ本文に日本語がない場合に送信できなくする方法です。
主に海外のスパムメッセージを弾きます。
この方法は日本語のない文章をブロックするという点でThrows SPAM Awayと似ていますが簡易的な方法です。手っ取り早くお問い合わせフォームのスパム対策したい場合や、コメント欄を使わない場合に適しています。
導入方法は下記コードをfunctions.phpに追加するだけです。functions.phpの編集方法と注意点
function wpcf7_validate_spam_message( $result, $tag ) {
$subject = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['your-subject']));
$message = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['your-message']));
//題名
if (!empty($subject)) {
if (preg_match('/^[!-~]+$/', $subject)) {
$result['valid'] = false;
$result['reason'] = array('your-subject' => '日本語で入力して下さい');
}
}
//メッセージ本文
if (!empty($message)) {
if (preg_match('/^[!-~]+$/', $message)) {
$result['valid'] = false;
$result['reason'] = array('your-message' => '無効な文章です');
}
}
return $result;
}
add_filter( 'wpcf7_validate', 'wpcf7_validate_spam_message', 10, 2 );
このコードは「題名」と「メッセージ本文」別々に日本語の判定を行っています。どちらかに日本語が無ければエラーになります。
元コード: Contact Form 7のスパムメール対策
Contact Form 7のクイズ機能を使用する
Contact Form 7のクイズはその名の通り、クイズを出して正しい答えが入力されている場合のみ送信を行う機能です。フォームの下に文字や数字を入力する項目がよくありますが、それと同じような機能を持たせることができます。
クイズを使用すると海外スパムだけでなく日本語スパムもブロック可能です。
reCAPTCHAを使用する
reCAPTCHAとは人間とWebボットを識別するための認証システムです。2020年5月現在、reCAPTCHA v3まで出ていますがサイトでよく使用されているのはreCAPTCHA v2です。
reCAPTCHA v2の認証は「私はロボットではありません」と表示されるもので追加の認証で信号機や横断歩道の画像を選ぶ時もあります。見たことがある人も多いと思います。
reCAPTCHA v3ではチェックマークも画像選択も無くなりユーザーへの負担が大幅に減っています。これから利用する人はreCAPTCHA v3を使うとよいでしょう。
- Google: reCAPTCHA v3
- Web Design Leaves: reCAPTCHA の使い方(v2/v3)
コメント欄のスパム対策(Throws SPAM Away)
コメント欄のスパム対策には「Throws SPAM Away」がおすすめです。
Throws SPAM Awayは、海外スパムからコメント欄を守るための国産WordPressプラグインです。主に日本語の入っていないコメント投稿をブロックします。
スパムコメントを無視して何もなかったなのように捨てる強力スパム対策プラグイン
Throws SPAM Away
Throws SPAM Awayは、スパムの投稿をエラーメッセージ無しで送信したように見せかけ実際にはブロックします。
スパム側はブロックされているか分かりません。
Throws SPAM Awayは以下のスパムフィルタを持っています。
- 日本語の有無による判定
- NGキーワードによる判定
- 疑わしいリンク判定
- ダミー項目を用いたスパム判定
- IPアドレスによる判定
- スパムフィルタによる判定
■インストール方法
WordPress管理画面のプラグイン > 新規追加
検索ウィンドウに「Throws SPAM Away」と打てば表示されます。
インストール > 有効化するとサイドメニューに「Throws SPAM Away」が追加されます。
設定項目は多いですが、初期設定は必要ないのですぐに使用可能です。
■Contact Form 7の認証に使用する場合
Throws SPAM AwayはWordPressのコメント機能対して働きます。そのままではContact Form 7のお問い合わせフォームに対応していません。
Contact Form 7の認証に使用する場合はfunctions.phpの編集が必要で中級者向けの内容になります。方法は開発者様の記事があるのでそちらを参考にしてください。
Throws SPAM AwayをContact Form 7で使用する方法
スパム対策が面倒ならフォームやコメント欄自体を無くすべき
スパム対策は面倒です。特にWordPressの初心者で分からないことだらけの人にとっては後回しにしたい項目かもしれません。
- スパム対策をしなくても最初のころはスパムが来ない。
- スパム対策をしても確認しないので効果がよく分からない。
確かにそうかもしれませんがブログを長く続けているとスパムは次第に増えていきます。
スパムは検索エンジンのようにサイトを巡回してコメント投稿できるフォームを探し、自動で迷惑メッセージを送ってくるのです。
スパムコメントはサイト運営者だけでなくユーザーにとっても迷惑なものです。スパムのリンクにユーザーがアクセスして被害を受けないようにするためにもスパム対策は必要になります。
スパム対策が面倒と感じるなら、コメント欄やメッセージフォーム自体を無くしてしまうのも一つの方法です。スパム対策に充てる時間をより有効に使えるでしょう。