WordPressに問い合わせフォームを設置する方法は、主に「実績のあるプラグインを使う方法」と「必要な機能だけを自作する方法」の2つです。
初心者にはプラグインが分かりやすい一方、フォームを1つ置くだけなら自作して構成を軽くする選択肢もあります。この記事では、両者の違いと、安全に運用するための確認項目を紹介します。
プラグインと自作のどちらを選ぶ?
| 方法 | 向いているケース | 注意点 |
|---|---|---|
| 問い合わせフォーム用プラグイン | 短時間で設置したい、複数フォームや複雑な項目が必要 | 更新を継続し、使わない機能や連携を増やしすぎない |
| 自作プラグイン | フォームが少なく、必要な機能を限定できる | セキュリティ対策と保守を自分で続ける必要がある |
コードに不慣れなら、利用者が多く継続的に更新されているプラグインを選ぶ方が安全です。自作は「プラグインを減らせるから」という理由だけで選ばず、更新を引き受けられる場合に限りましょう。
Contact Form 7で作成する基本手順
代表的な選択肢の一つがContact Form 7です。管理画面の表示は更新で変わることがありますが、基本的な流れは次のとおりです。
- 管理画面の「プラグイン」→「新規プラグインを追加」で「Contact Form 7」を検索します。
- 作者や配布元を確認してインストールし、有効化します。
- 「お問い合わせ」からフォームを作り、氏名・返信先メールアドレス・件名・本文など必要な項目だけを設定します。
- 「メール」で送信先、送信元、Reply-To、件名を設定します。
- 固定ページにContact Form 7ブロックを追加し、作成したフォームを選びます。
- ログアウト状態で送信し、受信と返信先が正しいことを確認します。
送信元には、できるだけサイトと同じドメインのメールアドレスを使います。訪問者が入力したアドレスは送信元ではなくReply-Toに設定すると、なりすまし判定による不達を避けやすくなります。
自作フォームに必要な安全対策
自作する場合は、見た目だけでなく送信処理の対策が重要です。少なくとも次の項目を実装します。
- 入力値の検証:必須項目、文字数、メールアドレス形式を確認する
- 入力値の無害化:用途に応じて
sanitize_text_field()、sanitize_email()、sanitize_textarea_field()などを使う - 出力時のエスケープ:確認画面やエラー表示へ入力内容を戻す場合も、そのまま出力しない
- 不正送信対策:nonce、ハニーポット、短時間の連続送信制限を組み合わせる
- ヘッダーインジェクション対策:入力された改行や任意のメールヘッダーを受け入れない
- 個人情報の抑制:不要な項目を集めず、メールアドレスをページ本文へ直接掲載しない
nonceは不正なリクエストを減らす助けになりますが、迷惑送信を単独で防ぐ仕組みではありません。ハニーポットや送信回数制限も併用します。また、WordPressの wp_mail() が成功を返しても、相手の受信箱への到着まで保証されるわけではありません。
設置後に確認すること
- パソコンとスマートフォンで入力・送信できる
- 必須項目や不正なメールアドレスに分かりやすいエラーが出る
- 管理者へ通知メールが届き、返信すると入力者のアドレスが宛先になる
- 送信完了後の二重送信が起きない
- フォームから自分のメールアドレスが読み取れない
- プライバシーポリシーへの案内がある
迷惑メールフォルダーも確認し、可能なら異なるメールサービスから複数回テストします。受信できない場合は、送信元ドメイン、サーバーのメール設定、SPF・DKIM、セキュリティ機能による遮断を順に確認してください。
なおぽラボでの構成
なおぽラボでは、現在は必要な項目だけを備えた自作プラグインで問い合わせフォームを運用しています。入力値の検証、nonce、ハニーポット、連続送信制限を実装し、公開ページにはメールアドレスを記載せず、問い合わせフォームへ誘導しています。
以前利用していたContact Form 7は、切り替え後に送受信テストを行ってから停止・削除しました。置き換える場合は、先に新しいフォームの受信を確認し、古いフォームを参照するページがないか調べてから削除するのが安全です。
まとめ
手軽さを優先するなら、更新が続いている問い合わせフォーム用プラグインが適しています。必要な機能が少なく、実装と保守ができるなら自作も選択肢です。どちらの場合も、公開しただけで終わらせず、定期的な送受信テストと迷惑送信対策を続けましょう。
