ブログやウェブサイトでも便利で使える WordPress お問い合わせフォームプラグイン「Contact Form 7」。知人から「Contact Form 7 が動かない」という相談がり、調べるとプラグイン構造上から起こるケアレスミスだと判明。対処方法を紹介します。 HTMLを書いていると、p要素とdiv要素どちらを使えばいいか、div要素とspan要素どちらを使えばいいか、等の悩みが出てくると思います。pとdivとspanの違いはざっくり説明すると以下のようになります。p:ブロック要素。段落を指定する時に使います。div:汎用ブロック要素。 Nocean 300,000+ active installations Tested with 5.4.4 Updated 6 months ago reCaptcha by BestWebSoft (344 total ratings) Protect WordPress website forms from spam entries with Google reCAPTCHA. Honeypot for Contact Form 7 – Adds honeypot anti-spam functionality to CF7 forms. WordPress で問合せフォームを設置する時に使用する定番プラグインと言えば、「Contact Form 7」。簡単な設定だけですぐにフォームが設置できるものの、何も対策をせずに放置していてスパムが来るようになり頭を抱えている人もいるのではないかと思います。もし今大丈夫でも、ある日突然スパムが来るようになる可能性が高いので今のうちから対策しておきましょう。, ここで紹介する対策は、メールの本文に日本語が含まれていない場合はエラーを返しメール送信できないようにするというものです。WordPress 5.4 で動作確認済み。もし英語のメールを受け取ることを想定しているような場合は、最後に紹介する「Contact Form 7」の「クイズ」機能を使った方法を試してください。, 日本語が含まれていない場合にエラーを返す方法については、いくつかのサイトで紹介されていますが、それらは日本語が1文字以上入ってさえいれば送信できてしまうものが多いため、ここでは日本語/全角文字が全体の文字数に対して特定の割合以上含まれているかどうかチェックするという少し厳しめのバリデーションを紹介します。, 各コードの$field_name = ‘your-message’;の部分は、利用しているフォームのチェックしたいフィールド名に変更してください。, 下記の例では、正規表現で指定したぁ-んァ-ヶー一-龠0-9、。のとおり、「ひらがな」「カタカナ」「漢字」「全角数字」「、」「。」にマッチする文字が全体の50%未満の場合はエラーを返すようにしています。, 50% ルールは、ルー大柴(古っ)みたいに、チョイチョイ英単語を混ぜるような人でない限りまずはエラーにはなりませんが、心配であれば$min_rate = 30;(30%)などに下げておいても良いでしょう。, mb_strwidth 関数は、半角を1、全角を2とした文字列の幅を返し、mb_strlen 関数は、半角全角に関係なく文字数を返すため、mb_strwidth – mb_strlenで全角の文字数を取得することができます。, ただし、mb_strwidth 関数は韓国語や中国語も全角として扱うということ、また一部の日本語記号を半角として扱う特徴があります。より厳密に日本語だけに限定したい場合は上のコードを使いましょう。, 一応参考までに、他サイトで紹介されているような方法も紹介しておきます。これは文字数の割合はチェックしていないため、たとえ1文字だけでもバリデーションを通過する文字列が含まれれば送信できてしまいます。しかし通常はこれで十分だと思います。, 正規表現で、ひらがなが1文字以上含まれているかどうかチェックし、なければエラーを返します。, 半角英数字のみだった場合はエラーを返します。半角英数字以外の文字列が1文字でも含まれていれば許可されるため、この中では一番緩いバリデーションとなります。, 「Contact Form 7」の「クイズ」機能を使用することで、スパム対策を実現できます。, 特別なコードを追加する必要ないため、比較的簡単に導入できるものの、実は今回紹介した対策法の中では一番強力なスパム対策になり得ます。, フォーム追加の画面で「クイズ」をクリックすると、クイズ設定画面が表示されますので、質問と答えを半角パイプ(|)で分けて登録します(例:質問|答え)。改行して複数登録しておくと、その内の1つが毎回ランダムで表示されます。, 英語のメールを受け取る可能性がある場合など、送信者の使用言語に関係なくスパム対策したい場合は、下記などのクイズを設定すると良いでしょう。, 今回紹介した方法以外にもっと画期的な方法などあれば是非コメント欄で教えてください。, 日本では主にUNIXサーバーの構築、運用などに携わり、2006年に仕事を辞めてカナダに来てそのまま永住。, カナダでは、日本からカナダに留学や永住、ビジネスで渡航する人たちのサポートを行う傍ら、専門分野+趣味でもあるWeb制作、運用を継続しながら、最近では写真/動画撮影、動画制作、モーショングラフィックなど、新しい分野のスキルアップに励んでいます。, Peas Code は、僕が過去の経験の中で学んだことを、特定の分野に限定せず公開していくことを目的としています。中にはコードに見えてしまうような意味不明な僕独自の理論も含まれますが、知っていると平和になれると言う意味で、Peas(peace → peas) Code と名付けました。これが意味不明か・・・。, 僕について、もうちょっと詳細を知りたいという変わった人は[About me]を見てください。, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。, WordPress|過去記事埋め込み時のブログカードをプラグインなしで簡単カスタマイズ, バンクーバーの公共交通機関TransLink|同じ駅内で21分以内の入退場はチャージされない. Spam is a huge issue with contact forms on WordPress websites. As the most popular free WordPress contact form plugin, Contact Form 7 is highly targeted by spammers. WordPress で問合せフォームを設置する時に使用する定番プラグインと言えば、「Contact Form 7」。 簡単な設定だけですぐにフォームが設置できるものの、何も対策をせずに放置していてスパムが来るようになり頭を抱えている人もいるのではないかと思います。 Mind you, as the most popular free WordPress contact form plugin, Contact Form 7 WordPressのスパム対策はAkismetよりもInvisible reCaptcha の方が良いです。なぜならAkismetはスパム投稿を防ぐことは出来ませんが、Invisible reCaptchaなら投稿自体を防ぐことが出来るからです。画像付きでインストール手順をお伝えしているので、参考にしてみて下さい。 本ブログでも、普段仕事で納品しているウェブサイトでも便利に使わせてもらっている WordPress お問い合わせフォームプラグイン「Contact Form 7」。, お問い合わせフォームに Contact Form 7 を使ったんだけど、送信ボタンを押してもページが再読込されるだけで送信できないし、入力不備の注意書きもでないんだよ~(泣)何がいけないのかな~???, というわけで、今回はいくつかある Contact Form 7 が動かない問題の中のひとつで、製作者のケアレスミスからくる送信できない事例を紹介します。, ちゃんと動作している Contact Form 7 なら送信ボタンを押せば普通に送信できますし、入力不備があれば画像のように注意書きが表示されます。, しかし、今回の知人の場合は「お問い合わせページが再読込されて何もアクションがない」という状況です。, 知人は、ぼくに相談する前にネットでいろいろ調べてみて試してみたそうなのですが、検索結果の多くは、「Javascript に問題(競合してるから)」や「API のバグ」など見当違いの小難しいことばかり・・・。, そんなことも実際に起こったからネットにあるのでしょうが、原因はもっと簡単なことだったりすることの方が多い気がします。単純なケアレスミスとか。, Contact Form 7 を利用開始すると、ソースに以下のようなコードを吐き出します。, で、以下が WordPress 管理画面の Contact Form 7 でフォーム作成を作成した画面。, フォーム作成では「
」の間のコードを入力するわけです。, しかし今回の知人の場合は、テーブルレイアウトを絡めたオリジナルデザインで作成したまでは良いが、自動で