【コピペOK】初心者でもできる!多機能&おしゃれな予約フォームのデザインカスタマイズ

記事内にプロモーションを含む場合があります。
【コピペOK】初心者でもできる!多機能&おしゃれな予約フォームのデザインカスタマイズ

フォームを設置するとき、
「ちょっとした質問用のシンプルなお問い合わせフォーム」から
「サービスの申し込みや面談予約などの本格的な予約フォーム」まで、
用途によって必要な機能や見た目は大きく変わります。

前回の記事では、Contact Form 7を使ったシンプルでおしゃれなお問い合わせフォームのカスタマイズ方法をご紹介しました。

関連記事


今回はその進化版!
入力 → 確認 → 完了の3ステップ構造で、
予約・申し込み用に最適な多機能フォームを作ります。

具体的には、以下のようなカスタマイズ例を、コピペOKのコード付きで解説します。

こんな方におすすめ!
  • マルチステップフォームを導入したい方
  • 講座・施術・面談など専用の申し込みフォームを作りたい方
  • カレンダーで日付選択ができる予約フォームを作りたい方
  • ラジオボタンやチェックボックスの選択肢を組み込みたい方
  • デザイン性と操作性を両立させたい方

📝特徴:デザイン性も操作性も重視した本格的な申し込みフォーム。セミナー予約・サービスの申し込み・面談予約などに最適です。

ワンクリックで目的地へGO!

前回記事のおさらいと今回のゴール

【前回】完成イメージはコチラ👇

前回の記事では、Contact Form 7を使ったシンプルな1ステップのお問い合わせフォームを紹介しました。
最低限のカスタマイズで、色や余白を整えるだけでも見た目がぐっと良くなる方法をまとめた内容です。

関連記事
【今回】完成イメージはコチラ👇

今回は、さらにステップアップしたバージョン!「多機能&ステップ式」の予約フォーム

入力 → 確認 → 完了のマルチステップ構造で、シンプルすぎず、高機能すぎない操作性・デザイン性の両立を目指したフォームなので、幅広いシーンで活用できます。

使用例:こんな用途にぴったり!
  • カウンセリングや面談の予約
    例:キャリア相談、子育て相談、起業アドバイスなど
  • サービス・施術の申し込み
    例:エステ/ネイル/整体/美容室の予約、ヒーリング・セッションなど
  • 講座・セミナーの受付
    例:体験レッスン、本講座、オンラインスクールの事前申込み
  • イベントやワークショップの申込み
    例:少人数イベント、マルシェ出展希望、体験イベントなど
  • 無料相談・資料請求の受付
    例:制作相談、ライティング相談、Webサイト見積もり依頼など
  • 顧客インタビュー・ヒアリング日程調整
    例:リサーチ協力者の募集、対談・取材の予約調整など

使うツール・プラグイン紹介

今回のカスタマイズで使用するのは以下のツールです。

  • Contact Form 7(基本のフォーム作成のプラグイン)
  • Contact Form 7 Multi-Step Forms(マルチステップ対応プラグイン)
  • Flatpickr(カレンダー機能を実装するライブラリ)

これらを組み合わせることで、初心者の方でも本格的なマルチステップの予約フォームを作成できます。
※プラグインのインストール・有効化手順はここでは省略します。
必要な方は公式ガイドや前回記事を参考にしてください。

フォーム設計例と項目の紹介

今回は予約フォームの例として、以下のような項目を設計しています。

各項目のテキスト内容は、HTMLやContact Form 7のショートコード内で簡単に変更できるため、
用途に応じて自由にカスタマイズ・流用できます。

【設計例の項目一覧】
  • ご希望のサービス内容(プルダウン式:カウンセリング/相談予約/ワークショップ/イベントなど)
  • 名前/ふりがな
  • 電話番号/メールアドレス
  • 希望の連絡方法(ラジオボタン:電話/メール/どちらでも)
  • 第一希望/第二希望(カレンダー選択)
  • スタイル(チェックボックス:オンライン/対面 など)
  • ご質問・備考(自由入力欄)

これらを組み合わせることで、予約・申し込み時に必要な情報をしっかり集められる構成になります。
入力内容は確認画面でチェックでき、送信後は完了画面が表示される3ステップ設計です。
もちろん、ご自身のサイトに合わせてテキストや項目をカスタマイズして使ってくださいね!

マルチステップ予約フォームの作り方(全体の流れ)

まずは全体の流れを確認しましょう!

マルチステップフォームを使う場合、入力・確認・完了の3ページ構成になります。
以下のステップで準備していきます。

STEP
固定ページを3つ用意する
  • 入力ページ(例:/reserve-form
  • 確認ページ(例:/reserve-confirm
  • 完了ページ(例:/reserve-thanks
STEP
Contact Form 7で2つのフォームを作成

各ステップで使用するフォームのショートコードを、以下のように分けて作成します。

  • フォーム1:入力画面(→ 確認ページへ遷移)
  • フォーム2:確認画面(→ 完了ページへ遷移)

★このあと順番にコピペ用コードをご紹介します。
ショートコードに自分のフォームIDやページURLを反映することが必要です。

STEP
CSSでフォームデザインを整える

デザイン調整にはCSSが必要です。
この記事では、スマホファーストで使えるベーシックなデザインコードも用意しています。
色や余白などは、ご自身のサイトに合わせて自由に調整してください。

✦ ここから各コードセクションへ【コピペOK!】

マルチステップフォームは、入力→確認→完了の3つのステップで構成されているため、
それぞれに対応するフォーム(Contact Form 7)と固定ページを用意する必要があります。

01|入力フォーム(Step 1)

Contact Form 7の入力フォームを作成する

まず、以下のような内容で「入力用フォーム」をContact Form 7上で作成します。
フォーム内容はこのあと紹介するコピペコードを使ってOKです。

コピペ用コード

<div class="form-reserve">
  <div class="form-item">
    <label><span class="required-tag">必須</span> ご希望のサービス内容</label>
    [select* your-service include_blank "カウンセリング""予約相談"
    "ワークショップ" "イベント参加申し込み" "体験レッスン""その他"]
  </div>

  <div class="form-item">
    <label><span class="required-tag">必須</span> お名前</label>
    [text* your-name placeholder "例:山田 太郎"]
  </div>

  <div class="form-item">
    <label><span class="required-tag">必須</span> ふりがな</label>
    [text* your-kana placeholder "例:やまだ たろう"]
  </div>

  <div class="form-item">
    <label><span class="required-tag">必須</span> 電話番号</label>
    [tel* your-tel placeholder "例:09012345678"]
  </div>

  <div class="form-item">
    <label><span class="required-tag">必須</span> メールアドレス</label>
    [email* your-email placeholder "例:sample@example.com"]
  </div>

  <div class="form-item">
    <label><span class="required-tag">必須</span> ご希望の連絡方法</label>
    [radio your-contact-method use_label_element "電話" "メール" "どちらでも"]
  </div>

  <div class="form-item">
    <label><span class="optional-tag">任意</span> 第1希望日</label>
    <div class="date-wrapper">
      [text your-first-date class:datepicker-field placeholder "例:2025-04-01"]
      <span class="calendar-icon icon1" aria-hidden="true"></span>
    </div>
  </div>

  <div class="form-item">
    <label><span class="optional-tag">任意</span> 第2希望日</label>
    <div class="date-wrapper">
      [text your-second-date class:datepicker-field placeholder
      "例:2025-04-05"]
      <span class="calendar-icon icon2" aria-hidden="true"></span>
    </div>
  </div>

  <div class="form-item">
    <label><span class="optional-tag">任意</span> スタイル</label>
    [checkbox your-style use_label_element "対面希望"
    "オンライン希望(Zoomなど)" "どちらでもよい"]
  </div>

  <div class="form-item">
    <label><span class="optional-tag">任意</span> ご質問・備考</label>
    [textarea your-message placeholder "ご質問や特記事項があればご記入ください"]
  </div>

  <div class="form-submit">
    [submit "入力内容を確認する"]
   [multistep multistep-656 first_step"/reserve-confirm"]
  </div>

</div>

上記コードをコピペしただけの状態です(CSSスタイルはまだ当たっていません)
 このあと紹介するCSSを追加することで、見た目が整います。

おまけ:メール通知の設定例(コピペOK)

Contact Form 7の「メール」タブに設定する内容の一例です。
必要に応じて、あなたのフォーム項目に合わせて変更してください。
そのまま使えるよう、コピペ用のテキストもご用意しました!

==================================
■ サービスの申し込みがありました。
==================================

▼ ご希望の講座  
[your-service]

▼ お名前  
[your-name]

▼ ふりがな  
[your-kana]

▼ 電話番号  
[your-tel]

▼ メールアドレス  
[your-email]

▼ ご希望の連絡方法  
[your-contact-method]

▼ ご希望日(第一希望)  
[your-first-date]

▼ ご希望日(第二希望)  
[your-second-date]

▼ スタイル  
[your-style]

▼ ご質問・備考  
[your-message]

==================================
このメールは、当サイトのご予約フォームから送信されました。

作成したフォームを固定ページに貼り付ける

作成したフォームは、以下の2つの方法で固定ページに挿入することができます。

方法①:ショートコードをコピーして貼り付ける

Contact Form 7でフォームを作成すると、フォーム一覧に表示されるショートコード
(例:contact-form-7 id="XXXXXXX" title="01|入力画面"

このショートコードを、Step1用に作成した固定ページ(スラッグ例:/reserve-form)の本文エリアにそのまま貼り付けてください。

このコードは例です。
idtitleの値はご自身が作成したフォームの実際のID・タイトルに必ず置き換えてください。
そのままコピペしても動作しません。

方法②:ブロックエディタで「Contact Form 7」ブロックを選ぶ

ブロックエディタを使用する場合は、
本文エリアに「+」ボタンから「Contact Form 7」ブロックを選び、
表示されたプルダウンから該当するフォームを選択することも可能です。

これで、固定ページにフォーム本体が表示されるようになります。

これで、固定ページ上にフォーム本体が表示される状態になります。
次に、ページ遷移を制御する「マルチステップショートコード」を追加していきます。

マルチステップのショートコードを追記する

Contact Form 7 Multi-Step Forms(マルチステップ対応プラグイン)を導入することで以下の項目が追加されます。

重要な注意点!

フォームの下に、遷移を制御するマルチステップショートコードを追加します。
このコードがないと、確認ページへ進む動作が行われません。

[multistep multistep-656 first_step "/reserve-confirm/"]

multistep-656 の「656」はこの入力フォームのID番号です。
Contact Form 7のフォーム一覧で確認して、必ずご自身の番号に置き換えてください。

/reserve-confirm/ は、次に遷移させたいページ(確認ページ)のスラッグです。
これも正確に設定してください。

02|確認フォーム(Step 2)

続いて、Step1で入力された内容を確認するための「確認フォーム」を作成します。
このフォームは、基本的にはStep1とほぼ同じ構成ですが、ユーザーが入力した情報を表示させるため、各項目を以下のような特殊な記述に変更します。

例)
[text* your-name][multiform your-name]
[email* your-email][multiform your-email]

このように [multiform フィールド名] の形式で記述することで、入力内容を表示させることができます。

コピペ用コード

<div class="form-reserve">
  <div class="form-item">
    <label><span class="required-tag">必須</span> ご希望のサービス内容</label>
    [multiform your-service]
  </div>

  <div class="form-item">
    <label><span class="required-tag">必須</span> お名前</label>
    [multiform your-name]
  </div>

  <div class="form-item">
    <label><span class="required-tag">必須</span> ふりがな</label>
    [multiform your-kana]
  </div>

  <div class="form-item">
    <label><span class="required-tag">必須</span> 電話番号</label>
    [multiform your-tel]
  </div>

  <div class="form-item">
    <label><span class="required-tag">必須</span> メールアドレス</label>
    [multiform your-email]
  </div>

  <div class="form-item">
    <label><span class="required-tag">必須</span> ご希望の連絡方法</label>
    [multiform your-contact-method]
  </div>

  <div class="form-item">
    <label><span class="optional-tag">任意</span> ご希望日(第一希望)</label>
    [multiform your-first-date]
  </div>

  <div class="form-item">
    <label><span class="optional-tag">任意</span> ご希望日(第二希望)</label>
    [multiform your-second-date]
  </div>

  <div class="form-item">
    <label><span class="optional-tag">任意</span> 受講スタイル</label>
    [multiform your-style]
  </div>

  <div class="form-item">
    <label><span class="optional-tag">任意</span> ご質問・備考</label>
    [multiform your-message]
  </div>

  <div class="form-submit">
    [submit "送信する"]
    [multistep multistep-240 last_step send_email "/reserve-thanks"]
  </div>
</div>

フォームの表示方法

この確認フォームも、Step1と同様にContact Form 7で作成します。
作成後は、Step2用に作った固定ページ(例:/reserve-confirm)にフォームを貼り付けます。

固定ページへの反映方法はStep1と同様で、以下の2通りがあります。

  • 方法①:ショートコードをコピーして貼り付ける
  • 方法②:ブロックエディタで「Contact Form 7」ブロックを使う

マルチステップショートコードを追記

フォームの遷移制御用に、以下のショートコードを固定ページ内に追加していますが、必ずご自身の番号に置き換えてください。

[multistep multistep-240 last_step send_email "reserve-thanks"]

multistep-240 の「240」はStep2で作成したフォームのID番号に置き換えてください。
"/reserve-thanks/" は完了ページ(Step3)のスラッグです。スペルミスやURLの違いがあると遷移しません。
※このURLの間違いもよくあるので注意!

03|完了ページ(Step 3)

最後に、お申し込みが完了したことを伝える完了ページ(サンクスページ)を作成します。
このページにはフォームのショートコードは不要で、HTMLだけでOKです。

例:WordPress固定ページにコピペして使える完了メッセージ

<div class="thanks-message">
  <p>このたびは、お申し込みいただきありがとうございます。</p>
  <p>内容を確認のうえ、48時間以内にご連絡差し上げますので、今しばらくお待ちくださいませ。</p>
  <p>24時間以内にメールが届かない場合は、迷惑メールフォルダをご確認いただくか、<br>
  以下より再度ご連絡ください。</p>
  <div style="margin-top: 1.5em;">
    <a href="/" class="btn-home">ホームに戻る</a>
  </div>
</div>

btn-home に対するスタイルは、ボタンとして見せるためのクラス名です。
この記事ではSWELLテーマのボタンブロックを参考にしていますが、デザインの詳細なカスタマイズ方法については本記事では触れていません。

CSSデザインカスタマイズ例(スマホ対応・カラー調整つき)

フォームの見た目を整えるためのCSS例を紹介します。
以下のようなポイントを意識して、スマホでも見やすく、使いやすいデザインを目指しました。

このCSSでできること
  • サイトカラーに合わせた背景・ボタン・ラベルの色調整
  • スマホファーストのレスポンシブ対応
  • 必須・任意ラベルの見せ方(小さなアイコンや色分け)
  • 入力エラーや確認画面のデザイン強化

記事内では、そのまま使えるコピペ用CSSを掲載しています。
色や角丸、フォントサイズなどは、必要に応じて自由に調整OKです!

カスタマイズは「追加CSS」欄に記述してください

WordPress管理画面 → 外観 → カスタマイズ → 追加CSSに貼り付け

/* --- フォーム全体の囲みと見た目(白背景+影+角丸) --- */
.form-reserve {
  background-color: #fff;
  padding: 2em;
  border-radius: 50px;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05);
  max-width: 860px;
  margin: 0 auto;
}

/* --- セレクトボックスの矢印カスタマイズ(ライラックの矢印) --- */
.form-reserve select {
  appearance: none;
  background: #fff url("data:image/svg+xml,%3Csvg viewBox='0 0 35 35' fill='%231e3a5f' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M7 10l5 5 5-5'/%3E%3C/svg%3E") no-repeat right 0.8em center;
  background-position: right 0em top 85%;
  background-size: 35px 35px;
  padding-right: 2.5em;
}

/* --- フォーム項目(ラベルと入力欄のセット)のレイアウト --- */
.form-item {
  display: flex;
  flex-direction: column;
  gap: 1.2em;
  margin-bottom: 1.8em;
}

.form-item label {
  display: block;
  font-weight: 600;
  margin-bottom: 0.6em;
  color: #4a4a4a;
}

/* --- 必須/任意バッジのデザイン --- */
.required-tag,
.optional-tag {
  display: inline-block;
  font-size: 0.75em;
  padding: 0.4em 1.2em;
  border-radius: 999px;
  font-weight: 600;
  margin-right: 0.4em;
}

.required-tag {
  background: #1e3a5f;
  color: #fff;
}
.optional-tag {
  background: #ccc;
  color: #fff;
}

/* --- 入力欄全体のデザイン(テキスト/メール/電話/セレクト) --- */
input[type="text"],
input[type="email"],
input[type="tel"],
textarea,
select {
  width: 100%;
  padding: 0.75em 1em;
  border: 1px solid #ccc;
  border-radius: 8px;
  font-size: 1em;
  transition: border 0.3s;
}

/* --- フォーカス時の強調(ボーダーカラー変更) --- */
input:focus,
textarea:focus,
select:focus {
  border-color: #1e3a5f;
  outline: none;
}

textarea {
  min-height: 160px;
}

/* ========= チェック・ラジオ(カスタム) ========= */
.wpcf7-form-control.wpcf7-radio,
.wpcf7-form-control.wpcf7-checkbox {
  display: flex;
  flex-direction: column;
  gap: 0.5em;
}

.wpcf7-list-item {
  position: relative;
  padding-left: 2em;
  font-size: 1em;
}

/* --- チェックボックス/ラジオボタンのスタイル(カスタムデザイン) --- */
.wpcf7-list-item input[type="radio"],
.wpcf7-list-item input[type="checkbox"] {
  position: absolute;
  left: 0;
  top: 0.3em;
  width: 1.2em;
  height: 1.2em;
  appearance: none;
  border: 2px solid #1e3a5f;
  border-radius: 4px;
  background: #fff;
  cursor: pointer;
}

.wpcf7-list-item input[type="radio"] {
  border-radius: 50%;
}

.wpcf7-list-item input[type="checkbox"]:checked,
.wpcf7-list-item input[type="radio"]:checked {
  background-color: #1e3a5f;
  background-image: url("data:image/svg+xml,%3Csvg fill='none' stroke='%23ffffff' stroke-width='2.5' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5 13l4 4L19 7'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: 20px 20px;
}

/* --- カレンダーアイコンと位置調整 --- */
.date-wrapper {
  position: relative;
}

.calendar-icon {
 display: inline-block;
  width: 24px;
  height: 24px;
  background-image: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%231e3a5f" viewBox="0 0 24 24"%3E%3Cpath d="M7 10h2v2H7zM11 10h2v2h-2zM15 10h2v2h-2zM7 14h2v2H7zM11 14h2v2h-2zM15 14h2v2h-2z"/%3E%3Cpath d="M19 4h-1V2h-2v2H8V2H6v2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z"/%3E%3C/svg%3E');
  background-repeat: no-repeat;
  background-size: contain;
  background-position: center;
  position: absolute;
  right: 1em;
  top: 0.7em;
  pointer-events: auto;
  cursor: pointer;
}

/* ▼入力欄に余白を追加してアイコンとかぶらないように */
input.datepicker-field {
  width: 100%;
  font-size: 16px;
  box-sizing: border-box;
  color: #333;
}


/* --- 送信ボタンのスタイルとホバー時の変化 --- */
/* ▼ ボタンの位置を中央寄せに */
.form-submit > p {
  text-align: center;
}

/* ▼ 送信ボタン */
.form-submit input[type="submit"] {
  background-color: #1e3a5f;
  color: #fff;
  font-weight: bold;
  padding: 0.8em 2em;
  border: none;
  border-radius: 999px;
  font-size: 1em;
  cursor: pointer;
  transition: background 0.3s;
  display: inline-block;
  min-width: 240px;
  text-align: center;
}

/* ▼ ホバー */
.form-submit input[type="submit"]:hover {
  background-color: #345c91;
}

/* ▼ スピナー */
.form-submit .wpcf7-spinner {
  position: absolute;
  margin: 0;
  transform: none;
}

.form-note {
  font-size: 8px;
  color: #666;
  margin-top: 1.5em;
  margin-bottom: 1.5em;
  text-align: left;
  line-height: 1.6;
}

/* ========= PC表示:ラベル+入力欄の横並び ========= */
@media screen and (min-width: 768px) {
  .form-reserve {
    padding-top: 3em;
  }
  .form-reserve p {
    display: flex;
    align-items: flex-start;
    gap: 1.5em;
  }

  .form-item {
    flex-direction: row;
    gap: 2.8em;
  }

  .form-reserve p label {
    width: 330px;
    flex-shrink: 0;
    margin-bottom: 0;
    padding-top: 0.4em;
    font-weight: 600;
  }

  .form-submit > p {
    display: block;
    text-align: center;
  }

  .wpcf7-form-control-wrap,
  .form-reserve p input,
  .form-reserve p select,
  .form-reserve p textarea {
    flex: 1;
    min-width: 0;
  }

  /* チェック・ラジオ(カスタム) */
  .wpcf7-list-item input[type="radio"],
  .wpcf7-list-item input[type="checkbox"] {
    top: 0.6em;
    left: -5px;
    width: 1.5em;
    height: 1.5em;
  }


  /* カレンダーアイコン */
  .calendar-icon {
    right: 2em;
  }
  .form-note {
    margin-top: 2.5em;
    font-size: 12px;
    line-height: 1.8;
  }
}

/* --- エラー時の表示(赤文字/枠の色など) --- */
.wpcf7-not-valid-tip {
  color: #d35d6e;
  font-size: 0.85em;
  margin-top: 0.4em;
  display: block;
  font-weight: 500;
}

/* ▼ エラーがあるinput要素に赤枠を追加 */
.wpcf7-form input.wpcf7-not-valid,
.wpcf7-form select.wpcf7-not-valid,
.wpcf7-form textarea.wpcf7-not-valid {
  border-color: #d35d6e;
  background-color: #fff8f8;
}

/* ▼ エラーメッセージの枠 */
.wpcf7-response-output {
  background-color: #f8f1ff;
  border: 2px solid #1e3a5f !important;  /* ← ここポイント */
  color: #4a4a4a;
  border-radius: 12px;
  padding: 1em 1.5em;
  text-align: center;
  font-size: 1em;
}

Flatpickrでカレンダーを導入|コピペで使えるコード付き

日付を手入力ではなくカレンダーから選べるようにするには、
軽量で人気のある日付ピッカーライブラリ「Flatpickr」が便利です。

ここでは、WordPressサイトでの実装方法を紹介しています。
今回は SWELLテーマでの例 を使っていますが、他のテーマでも子テーマを使えば同様に導入できます

以下のコードを、子テーマの functions.php にコピペするだけでOK!
(親テーマには直接書かないようご注意ください)

このサンプルでは、フォームの「第一希望/第二希望」などの日付欄にカレンダー機能を追加し、アイコンクリックでもカレンダーが開くように設定しています。
Flatpickrの基本的な導入から、クリック対応の初期化まで、ひととおり完結した内容です。

your-first-date.icon1 などの項目名・クラスは、実際のフォームに合わせて自由に変更可能です。

/**
 * フォーム flatpickr カレンダー
 */
function add_flatpickr_assets() {
  // Flatpickr本体・日本語ロケール・CSSを読み込む
  wp_enqueue_script('flatpickr', 'https://cdn.jsdelivr.net/npm/flatpickr', [], null, true);
  wp_enqueue_script('flatpickr-ja', 'https://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/ja.js', ['flatpickr'], null, true);
  wp_enqueue_style('flatpickr-style', 'https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css');

  // JSの初期化処理(アイコンクリックも対応)
  wp_add_inline_script('flatpickr-ja', "
    document.addEventListener('DOMContentLoaded', function () {
      const fp1 = flatpickr(\"input[name='your-first-date']\", {
        locale: 'ja',
        dateFormat: 'Y-m-d'
      });

      const fp2 = flatpickr(\"input[name='your-second-date']\", {
        locale: 'ja',
        dateFormat: 'Y-m-d'
      });

      const icon1 = document.querySelector('.calendar-icon.icon1');
      const icon2 = document.querySelector('.calendar-icon.icon2');

      if (icon1) icon1.addEventListener('click', () => fp1.open());
      if (icon2) icon2.addEventListener('click', () => fp2.open());
    });
  ");
}
add_action('wp_enqueue_scripts', 'add_flatpickr_assets');
関連記事

Flatpickrの詳細設定や、エラー対策はこちらを参考に。

最後に:動作確認のポイント

フォームが完成したら、以下の点をチェックしておきましょう。

  • ステップ遷移が正しく動くか
    入力 → 確認 → 完了ページまでスムーズに遷移するか確認します。
  • メール通知が届くか
    送信後に、自動返信メール・管理者宛メールが正しく送られているかを確認します。
    (迷惑メールフォルダに入っていないかも要チェック)
  • Flatpickrのカレンダーが正しく表示されるか
    日付欄をクリック、またはアイコンを押してカレンダーが表示されるか確認しましょう。
  • スマホでも快適に操作できるか
    PCとスマホの両方で、フォームの見え方や操作感に違和感がないかチェックします。

注意点&応用のヒント

フォームをコピペして設置するだけでも十分機能しますが、
より「見やすく、安心感のあるフォーム」に仕上げるには、以下のポイントも意識してみてください。

  • 項目が多いフォームは「見た目の整理」が大事
    項目がずらっと並んでいると、それだけで「入力めんどくさそう…」と思われがちです。
    1行ずつ余白を取ったり、グループごとに区切ることで、心理的な負担がぐっと減ります。
  • 確認・完了ページこそ信頼感が大事
    淡泊すぎると不安になる人も。
    感謝メッセージや対応の目安時間を添えると◎
  • サイトのトンマナに合わせる
    ボタン色、フォントサイズ、背景色などを統一すると、ページの一体感が出ます。

この記事では「基本形」として紹介しているため、
フォームやデザインは自由にアレンジして使ってOKです!

まとめ:予約フォームの基本設計から実装まで

今回は、Contact Form 7 × マルチステップ対応フォームの作り方を、実用的な予約フォーム例とともにご紹介しました。

  • 入力→確認→完了の3ステップ構成を基本に、必要な固定ページ・ショートコードの設置方法を解説
  • デザインのカスタマイズ(CSS)や、flatpickrによるカレンダー導入などもサンプル付きで紹介
  • 必須/任意ラベル・エラー表示・装飾など、使いやすさと見やすさの工夫もポイントです

このままコピペで使えるコードも多く掲載しているので、まずは「そのまま試してみる」から始めて、
慣れてきたらご自身のサイトに合わせてカスタマイズしていく流れがおすすめです。

フォームづくりのコツは「入力する人の気持ち」になること!
  • 項目が多いときは、入力の負担を減らす工夫(余白・段組・見出しの整理)
  • デザインは、サイト全体のトーンに合う色・スタイルに寄せると統一感UP
  • 自動返信メールや確認画面の文章も、安心感が伝わる表現を意識して
関連記事のご案内

簡単なフォームを作りたい方へ「シンプルカスタマイズの予約フォーム」もぜひ参考にしてください。

Flatpickrの詳細設定や、エラー対策はこちらでご紹介しています。

ぜひ今回のコードをベースに、自分のサイトに合ったフォーム作りに挑戦してみてください!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
ワンクリックで目的地へGO!