【コピペOK】WordPressお問い合わせフォームの作り方|Contact Form 7の設定・デザイン・入力チェックまで

  • URLをコピーしました!

こんにちはrey( @reydesign8376) です
都内の勤務生活を辞めてWebデザイナーに。今は趣味のサーフィンなどしながら海沿いでのんびり暮らしています。

WordPressでサイトを作ると、ほぼ必ず必要になるのがお問い合わせフォーム。この記事では、定番プラグイン「Contact Form 7」を使って、フォーム作成 → デザイン → メール設定 → 設置 → 入力チェックまで、この1本で全部できるようにまとめました。コードはコピペで繰り返し使えるので、保存してみてください。

目次

この記事でわかること

  • Contact Form 7の導入と基本の使い方
  • コピペで使えるフォームのHTMLとCSS
  • 通知メールと自動返信メールの設定
  • 入力チェック(バリデーション)とスパム対策
  • メールが届かないときの対処法

Contact Form 7とは

Contact Form 7は、WordPressでお問い合わせフォームを作れる無料のプラグインです。フォームを「フォームタグ」という短いコードで書くので、HTMLとCSSが少し分かればデザインを自由に調整できるのが良いところ。

ブロックエディターで簡単に作りたい人には、Snow Monkey Formsもおすすめです。

準備:プラグインを入れる

  1. 管理画面の「プラグイン」→「新規プラグインを追加」を開く
  2. 「Contact Form 7」で検索して「今すぐインストール」→「有効化」
  3. 左のメニューに「お問い合わせ」が追加されればOK
  4. 「お問い合わせ」→「新規追加」でフォームを作っていきます

手順1: フォームを作る

「フォーム」タブに最初から入っているコードを全部消して、下のコードを貼り付けます。

HTMLコード

<section class="cf_section">
    <div class="inner">
        <div class="item detail"><span class="description">法人名</span><span class="any_label">任意</span></div>
        <div class="item value">[text your-company autocomplete:organization]</div>
    </div>
    <div class="inner">
        <div class="item detail"><span class="description">お名前</span><span class="required_label">必須</span></div>
        <div class="item value">[text* your-name autocomplete:name]</div>
    </div>
    <div class="inner">
        <div class="item detail"><span class="description">メールアドレス</span><span class="required_label">必須</span></div>
        <div class="item value">[email* your-email autocomplete:email]</div>
    </div>
    <div class="inner">
        <div class="item detail"><span class="description">電話番号</span><span class="required_label">必須</span></div>
        <div class="item value">[tel* your-tel autocomplete:tel]</div>
    </div>
    <div class="inner selectlist">
        <div class="item detail"><span class="description">お問い合わせ事項</span></div>
        <div class="item value">[checkbox checklist use_label_element "〇〇について" "△△について" "××について" "その他"]</div>
    </div>
    <div class="inner message">
        <div class="item detail"><span class="description">お問い合わせ内容</span><span class="any_label">任意</span></div>
        <div class="item value">[textarea message]</div>
    </div>

    <div class="privacy">[acceptance privacy-agree]<a href="/privacy-policy/" target="_blank">プライバシーポリシー</a>に同意する[/acceptance]</div>
    <div class="send_btn">[submit "送信"]</div>
</section>

フォームタグの意味はこんな感じです。

タグタグ説明
[text* your-name]1行のテキスト。* を付けると必須になる
[email* your-email]メールアドレス。形式が正しいか自動でチェック
[tel* your-tel]電話番号。スマホでは数字キーボードが開く
[checkbox ...]チェックボックス(複数選択可)
[textarea message]複数行の入力欄
[acceptance ...]同意のチェック。チェックするまで送信できない
autocomplete:nameブラウザの自動入力を使えるようにする

CSSコード

このCSSを「外観」→「カスタマイズ」→「追加CSS」に貼り付けます。入力欄の見た目、入力中の強調、エラー表示も整えています。

.cf_section {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 1rem;
}
.cf_section .inner {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 2rem;
}
.cf_section .inner.message {
    align-items: flex-start;
}
.cf_section .item.detail {
    flex: 1;
}
.cf_section .item.value {
    flex: 1.3;
}

/* 必須・任意ラベル */
.required_label,
.any_label {
    font-size: 0.75rem;
    padding: 0.3rem 0.3rem 0.1rem;
    margin-left: 0.5rem;
    color: #fff;
}
.required_label { background: #e51a1a; }
.any_label { background: #a9a9a9; }

/* 入力欄 */
.cf_section input[type="text"],
.cf_section input[type="email"],
.cf_section input[type="tel"],
.cf_section textarea {
    width: 100%;
    padding: 0.6em 0.8em;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-size: 1rem;
    box-sizing: border-box;
}
.cf_section input:focus,
.cf_section textarea:focus {
    outline: none;
    border-color: #03183f;
    box-shadow: 0 0 0 3px rgba(3, 24, 63, 0.15);
}

/* エラー表示 */
.cf_section .wpcf7-not-valid {
    border-color: #e51a1a;
}
.cf_section .wpcf7-not-valid-tip {
    color: #e51a1a;
    font-size: 0.85rem;
    margin-top: 0.3em;
}

/* 同意チェックと送信ボタン */
.cf_section .privacy {
    text-align: center;
    margin-bottom: 1.5rem;
}
.send_btn input[type="submit"] {
    display: block;
    width: min(380px, 100%);
    margin: 0 auto 1rem;
    padding: 0.8em;
    color: #fff;
    background: #03183f;
    border: none;
    font-size: 1.2rem;
    cursor: pointer;
    transition: opacity 0.2s;
}
.send_btn input[type="submit"]:hover {
    opacity: 0.8;
}
.send_btn input[type="submit"]:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

/* スマホでは縦並び */
@media screen and (max-width: 781px) {
    .cf_section .inner {
        flex-direction: column;
        align-items: stretch;
        gap: 0.5rem;
    }
}

ポイント

  • 必須と任意をラベルではっきり分けると、入力してもらいやすくなります。
  • スマホでは項目名と入力欄を縦並びにして、入力欄を広く使えるようにしています。
  • 同意にチェックするまでは、送信ボタンが薄く表示されて押せないようになっています。

手順2: メールを設定する

「メール」タブで、問い合わせがあったときに自分に届く通知メールを設定します。[your-name] のようにフォームタグの名前を書くと、入力された内容に置き換わります。

項目入力例
送信先自分が受け取りたいアドレス
送信元[_site_title] <wordpress@自分のドメイン>
題名【お問い合わせ】[your-name]様より
追加ヘッダーReply-To: [your-email]

メッセージ本文の例です。

サイトからお問い合わせがありました。

法人名:[your-company]
お名前:[your-name]
メールアドレス:[your-email]
電話番号:[your-tel]
お問い合わせ事項:[checklist]

お問い合わせ内容:
[message]

送信元は必ず「自分のサイトのドメイン」のアドレスにしましょう。 送信元をお客さんのアドレス([your-email])にすると、なりすましメールと判定されて届かないことがあります。その代わりに「Reply-To」を入れておけば、そのまま返信ボタンでお客さんに返信できます。

自動返信メールを送る

同じ「メール」タブの下にある「メール (2) を使用」にチェックを入れると、お客さんに受付完了のメールを送れます。

項目入力例
送信先[your-email]
送信元[_site_title] <wordpress@自分のドメイン>
題名【[_site_title]】お問い合わせを受け付けました
[your-name] 様

お問い合わせいただき、ありがとうございます。
以下の内容で受け付けました。
3営業日以内にご返信いたしますので、少々お待ちください。

---
お問い合わせ内容:
[message]
---

[_site_title]
[_site_url]

手順3: ページに設置する

  1. フォームを保存すると、上に [contact-form-7 id="..." title="..."] というショートコードが表示されるのでコピー
  2. 「固定ページ」→「新規固定ページを追加」で、タイトルを「お問い合わせ」にする
  3. 「ショートコード」ブロックを追加して貼り付け、公開
  4. 実際に自分で送信して、通知メールと自動返信メールが両方届くか確認

入力チェック(バリデーション)

Contact Form 7は、何も設定しなくても基本の入力チェックをしてくれます。必須項目(* 付き)が空のときや、メールアドレスの形式がおかしいときは、送信できずにエラーが表示されます。

もう一歩踏み込んだチェックは、こちらの記事でコード付きで紹介しています。

スパム対策

フォームを公開すると、早ければ数日で営業メールやスパムが届き始めます。無料でできる対策は次の2つです。

  1. Google reCAPTCHA v3 や Cloudflare Turnstile を入れる。
    reCAPTCHAの管理画面でサイトを登録して「サイトキー」と「シークレットキー」を取得し、Contact Form 7の「お問い合わせ」→「インテグレーション」に入力するだけ。フォーム側の設定は不要です。
  2. 禁止ワードを設定する。
    「設定」→「ディスカッション」の「不許可コメントキー」に入れた言葉を含む送信も、Contact Form 7がスパムとして止めてくれます。

メールが届かないとき

送信完了のメッセージは出るのにメールが届かないときは、上から順に確認してみてください。

  1. 迷惑メールフォルダを見る。 一番多い原因です。
  2. 送信元が自分のドメインになっているか確認する。 Gmailなどのアドレスを送信元にすると届きません。フォーム編集画面に黄色い警告が出ていれば、その内容を直しましょう。
  3. SMTPで送る。 無料プラグイン「WP Mail SMTP」を入れて、レンタルサーバーで作ったメールアカウント経由で送るようにすると、届きやすくなります。
  4. 送信内容を保存しておく。 無料プラグイン「Flamingo」を入れると、メールが届かなかった場合も管理画面で問い合わせ内容を確認できます。

FAQ

Contact Form 7は無料ですか?

はい、無料です。この記事で紹介したプラグイン(Flamingo、WP Mail SMTPの無料版)もすべて無料で使えます。

確認画面は作れますか?

Contact Form 7だけでは作れません。確認画面が必要な場合は、追加プラグインを使うか、最初から確認画面に対応した別のフォームプラグインを選びましょう。

送信後に「サンクスページ」へ移動させたい

固定ページでサンクスページを作り、送信完了時に移動させるJavaScript(wpcf7mailsent イベント)を追加すると実現できます。

フォームのデザインが反映されません

フォームのHTMLに class="cf_section" が入っているか、キャッシュ系プラグインのキャッシュを削除したかを確認してみてください。

この記事が気に入ったら
フォローしてね!

share me!
  • URLをコピーしました!

この記事を書いた人

Webデザインとコーディングを中心に、html、CSSなどの現場で役立つWeb制作テクニックを発信してます。
デザインのトレンドを実務で即使えるテクニックや装飾アイデアでわかりやすいコード付きで解説しています。

目次