サイトアイコン WEBデザインMATOME

Contact Form 7でチェック内容に応じてテキストボックスへ自動入力

〜三日後から選択可・火曜無効・日本語対応のカレンダーをflatpickrで実装しよう〜

Contact Form 7(CF7)で予約フォームや日程入力欄を設けるとき、
標準のdateフィールドでは「使いにくい」「見た目がさみしい」と感じたことはありませんか?

今回は、そんな悩みを解決してくれるJavaScript製のカレンダーUIライブラリ「flatpickr」を使って、
CF7のカレンダーを次のようにカスタマイズする方法をご紹介します。

初心者でもわかりやすいように、コードの貼り方や注意点も含めて解説していきます!

なぜflatpickrを使うのか?

Contact Form 7 の標準 date タグは、ブラウザ依存のため見た目や動作がばらつきます。
一方、flatpickrを使えば以下のような魅力があります。

完成イメージ

フォーム内の日付入力欄が以下のようになります

実装手順

flatpickr本体と日本語ロケールを読み込む

まず、WordPressテーマの footer.php またはカスタムJSファイルに以下のスクリプトを読み込みます。

<!-- flatpickr CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">

<!-- flatpickr JS -->
<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
<!-- 日本語ロケール -->
<script src="https://cdn.jsdelivr.net/npm/flatpickr/dist/l10n/ja.js"></script>

2. JavaScriptでカレンダーを初期化

次に、以下のJavaScriptを設置します。Contact Form 7の date フィールドに自動的に適用されます。

document.addEventListener('DOMContentLoaded', function() {
    var Japanese = flatpickr.l10ns.ja;

    var inputs = document.querySelectorAll('input.wpcf7-date');
    inputs.forEach(function(input) {
        flatpickr(input, {
            altInput: true,
            altFormat: "F j, Y",
            dateFormat: "Y-m-d",
            locale: Japanese,
            minDate: new Date().fp_incr(3), // 三日後から
            disable: [
                function(date) {
                    return (date.getDay() === 2); // 火曜(2)を無効にする
                }
            ]
        });
    });
});

コード解説

パラメータ解説
altInput: true見た目を読みやすくする(例:「8月22日」)
altFormat表示用の日付フォーマット
dateFormat実際に送信されるフォーマット(”Y-m-d” 形式)
localejaを指定することで日本語化
minDatefp_incr(3)で今日から3日後に設定
disable無効な曜日(ここでは火曜)を関数で定義

よくある質問(FAQ)

Q. 火曜以外の曜日を無効にするには?

A. date.getDay() の戻り値を使って条件分岐できます。日曜(0)や土曜(6)も無効にしたい場合はこう書きます:

return (date.getDay() === 0 || date.getDay() === 6); // 土日を無効化

Q. flatpickrが動作しない場合の原因は?

Q. Multi-Step Forms(複数ページ)との併用はできる?

A. 可能です。ただし、ステップ切り替え時にflatpickrが再読み込みされない場合があるため、以下のように wpcf7cf_step_show イベントで再初期化しておくと安心です。

document.addEventListener('wpcf7cf_step_show', function() {
    document.querySelectorAll('input.wpcf7-date').forEach(function(input) {
        if (!input._flatpickr) {
            flatpickr(input, { ... }); // 上記と同じ設定
        }
    });
});

まとめ

Contact Form 7 のフォームにおける日付入力欄を、
flatpickrで「三日後以降・火曜無効・日本語化」することで、より快適なユーザー体験を提供できます。

「いつから予約を受け付けるか?」「定休日はどう避けるか?」
といった運用ルールに応じて柔軟にカスタマイズできるのがflatpickrの魅力です。

ぜひ導入して、あなたのサイトのフォーム体験をアップデートしてみてください!

関連リンク

モバイルバージョンを終了