はい、こんにちは!もしくはこんばんは~! 今回のワードプレスネタはお問い合わせフォームを簡単に作れるプラグイン「Contact Form 7」と、その問い合わせフォームを利用して送られてくるスパムメールを防ぐための「Akismet」の組み合わせの話。
よくある初心者向けワードプレスブログを作ろう的な教材や書籍などには
「Akismet(標準装備のプラグイン)を有効化しておきましょう」
と書いてありますよね、あたかもそれで万全であるかのように(笑)
いや、ダメってこともないんです。実際、無効にするとスパムメールじゃんじゃん来ます。 かなり減らせてくれてるので悪くはないんですけど、けっこう来るんですよね・・・
と、GoogleRecaptcha(グーグルリキャプチャ)なども試してみた結果、やっぱりAkismetに戻ってきてブログ全体の動作も軽くできた上にスパムメールもほぼ来ないという環境を作れたので、その方法をお伝えしたいなと思います。
※「ほぼ」と書きましたが、導入してから1週間、ツールっぽいスパムはゼロです。手動と思われる迷惑メールは判別・拒否できないため「ほぼ」としています。
では、よろしくおねがいします!
Akismetは無料で使う際に「広告を表示しません」と宣言が必要になっています。アドセンスやアフィリエイト広告を載せる際はご注意下さい。
こちらもオススメ
Googleフォームを使った問い合わせフォームもオススメです。プラグインが要らない分、軽く作れます。
Googleフォームの幅がはみ出る!スマホの横揺れを止める方法
WordPressブログの問い合わせフォームをGoogleフォームに変えてみたところ、一見快適に見えたけどスマホで確認してみたら気持ち悪い「横揺れ」発生;幅を調整しても止まらない横揺れ。止める方法を見つけたのでお伝えさせて頂きます。
続きを見る
Contact Form 7+Akismet 最終形態はコチラ
「Akismetを有効化」だけで説明を終えちゃってる教材というか解説が多いです。Akismetの本気を100%出せるようにするには、もう一点必要な作業があります。
Contact Form 7で作る問い合わせフォームのタグに記入する「オプション」です。
このオプションを付けることによってContact Form 7が記入内容をAkismetにスパムでないかを照合してくれるという機能が使えるようになるんです。
具体的なフォームの書き方
コンタクトフォームの入力欄ごとに書き込むオプションの文字列が少しずつ違うので、それぞれ見ていきましょう。
・お名前欄
shortcode
[text* your-name akismet:author]
・メールアドレス欄
shortcode
[email* your-email akismet:author_email]
・URL欄
shortcode
[text your-url akismet:author_url]
それぞれ後半の「akismet:○○○○○」の部分がそうです。
上記の3つとも設定しておくとスパム判定がよりしっかりできるとのことですが、このブログではお名前欄とメールアドレスのみを必須項目としています。URLは持ってない方も多いですしね。
以上が初心者向けとしてはあまり解説されていないスパム対策の「あと一歩」の部分でした。
つぎに、ここまでできたのならコレもやっておくと良いよ、というスパム対策方法をお伝えします。 簡単なのに効果の大きい面白い方法です。
外国語だけのメールを拒否
ワードプレスのFunctions.phpをいじる自信の無い方にはオススメできない方法ですが、テーマファイルの中のfunctions.phpという名前のファイルに以下の文字列を追記します。
php
// コンタクトフォーム7 日本語が含まれていないものを拒否 function wpcf7_validate_spam_message( $result, $tag ) { $value = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['your-subject'])); if (!empty($value)) { if (preg_match('/^[!-~]+$/', $value)) { $result['valid'] = false; $result['reason'] = array('your-subject' => '日本語で入力してください'); } } return $result; } add_filter( 'wpcf7_validate', 'wpcf7_validate_spam_message', 10, 2 );
こうしておくと英語や日本語以外の言葉しか使われていない問い合わせに対して「日本語で入力してください」というメッセージが返されるようになります。
「確認したらチェックしてね」を追加する
メッセージ本文の下あたりに「確認したらチェックして下さい」のチェックボックスを設置します。
こんな感じのいわゆる「チェックボックス」を付けておくんです。 すると、Contact Form 7のようなフォームを利用してスパムメールを送りつけてくるような「ツール」はチェックなどせず「送信」してしまいエラーが返される、と。
迷惑ツールに対するトラップみたいなものです(笑)
先に書いた「オプションを追加する方法」を知る前にこのチェックボックスを設置していたんですが、これだけでもかなり減りました。ちょっと笑っちゃいますよね~w
フォームに挿入するのはこんな感じ、
shortcode
<label>[acceptance acceptance-0] 入力内容をご確認の上チェックを入れてください。</label>
参考にさせて頂いたのがこちらのサイト
[sc_Linkcard url="http://curious-everything.com/1089-entry.html"]
もう更新はされていない様子?
なぜGoogleRecaptchaはやめたのか?
はじめに「GoogleRecaptcha」も試したけどAkismetに戻ってきた、と書きました。
いや~、なんかカッコよくて好きなんですよ。グーグルのアレ。護られてる感ありますしね!
でもですね、、、重いんですよ(汗)
問い合わせフォームのページだけじゃなくてコメント欄でも働かせたいので全ページが重くなるんです。
グーグルって検索結果の順位に表示スピードは関係ない、と豪語しながらもサーチコンソールでは遅いとエラー扱いしてくるじゃないですか。
今後、もっと重視してくるんじゃないかな~と予想していますが、そのグーグル謹製のプラグインが重いってどういうことだよ!と帽子を地面に叩きつけたくなります(笑)
※2020年7月現在、検索するとAkismetよりGoogleRecaptchaの方が軽い!という内容のブログを多く見受けます。しかし私のブログをPageSpeedInsight等で計測するとAkismetの方が表示までの時間が短くスコアも高くなります。どちらが正解なのかはご自身のブログやサイトを計測サイトで見比べてみて下さいね。
まとめ
さてさて、今回の「Contact Form 7とAkismetの設定でスパムをゼロに!」のまとめです。
- Akismetの有効化だけじゃダメ(スパム来る
- コンタクトフォームのタグにAkismetのオプションを追加
- チェックボックストラップでスパムツール対策
GoogleRecaptchaはカッコいいけど重い!
という内容でした~。
フォームのタグにオプションが必要だとか、全くノーチェックだったので今回知ることができてほんとに良かったなと我ながら思いつつ書きました。
ワードプレスのブログ開設方法ウンヌンとかって話、一度ブログ作れたらあんまり見直したりしませんものね~?(私だけ!?w
というわけで、今回の内容があなたのお役に立てていたなら嬉しいです。 最後までお読み頂き、 ありがとうございました!