MW WP Formのセレクトで「現在の年+3年」を自動生成する方法【コピペ可】

WordPress でフォームを作成する際、
多くの制作者が使っている人気プラグインのひとつが MW WP Form(MWフォーム) です。

日付入力(特に「年」のセレクトボックス)を扱うときに、
「毎年手動で年数を更新しないといけないのが面倒…」
と感じたことはありませんか?

この記事では、
MW WP Form のセレクト項目に「現在の年〜3年後」までを自動で出力する方法
をわかりやすく解説します。

毎年の手動更新が不要になり、フォーム管理もぐっとラクになります。
本記事では、実装方法を 2つのパターン に分けて紹介します。
どちらもコピペOKです!

なぜ「年の自動生成」が必要なのか?

たとえば以下のようなフォームを作っている場合、
毎年の更新が地味に大変です。

  • 予約フォーム
  • イベント申し込みフォーム
  • お見積もりフォーム
  • 契約更新フォーム

2024年、2025年、2026年…
と、年数が繰り返される項目はどうしても出てきます。

しかし、フォームの年数を固定値で書いていると、
年が変わるたびにフォームを修正しないといけません。

管理者にとってはもちろん、クライアントに納品している制作会社にとっても、
毎年の微調整は極力減らしたいところ。

そこでおすすめなのが、

PHPで現在の年を取得して自動生成する方法

PHPには date('Y') という便利な関数があり、
これを使うことで 現在の西暦(例:2025) を取得できます。

あとは「3年後までループで増やしていく」だけで、
更新不要のスマートなフォームに変わります。

ここからは 具体的な実装方法 を紹介します。

方法①:functions.phpで動的にセレクトを置き換える(推奨)

MW WP Form には <select> の選択肢を動的に書き換える
mwform_choices_mw-wp-form-〇〇 フィルターが用意されています。

この仕組みを使えば、
フォーム画面に表示されるセレクト項目を自動生成できます。

▼ コピペで使えるコード(フォームID 123 の例)

// MW WP Form:セレクトの年を「現在〜+3年」にする
add_filter('mwform_choices_mw-wp-form-123', function($choices, $field_name){
    
    // 対象のフィールド名に限定
    if ($field_name === 'year') {

        $current = date('Y');          // 現在の西暦を取得
        $max = $current + 3;           // 3年後まで

        $new_choices = [];
        for ($y = $current; $y <= $max; $y++) {
            $new_choices[$y] = $y;
        }

        return $new_choices;
    }

    return $choices;
}, 10, 2);

● 修正ポイント

  • mw-wp-form-123 → あなたのフォームIDに変更
  • $field_name === ‘year’ → セレクトの name 属性に変更

▼ フォームIDの調べ方

MW WP Form 管理画面 → フォーム一覧 →
該当フォームの右端「ショートコード」内に表示されています。

例:
[mwform_formkey key="123"]
→ フォームIDは 123

方法①のメリット

  • functions.php に書くだけでフォーム側を触らずに済む
  • 年が変わっても自動更新される
  • クライアントに納品しても安心
  • 違うフォームにも同じロジックを使い回せる

制作会社・フリーランスの方には特におすすめの方法です。

方法②:フォーム内のHTMLに直接PHPを書く

MW WP Form の項目をカスタムHTMLで書いている場合は、
フォームファイル内に直接 PHP を埋め込む方法もあります。

▼ コピペで使えるコード

<?php
$current = date('Y');
$max = $current + 3;
?>

<select name="year">
  <?php for ($y = $current; $y <= $max; $y++): ?>
    <option value="<?php echo $y; ?>"><?php echo $y; ?></option>
  <?php endfor; ?>
</select>

仕組みはシンプルで、
現在の年から3年後までをループで出力しているだけです。

方法②のメリット

  • コードが直感的でわかりやすい
  • カスタムフォームのデザインを自由に作れる
  • functions.php を触る必要がない

ただし、複数のフォームに同じ年リストを使う場合は
方法①の方が管理しやすい です。

■ name 属性の確認が重要!

上記のどちらの方法でも、
対象となるセレクト項目の name 属性 を正しく把握する必要があります。

<select name="year">

この場合は year をコード側に記述します。

もし select_year など別の名称になっていると、
コードが反応せず自動生成されないので注意。

まとめ:MW WP Formの年選択は自動生成で管理コストをゼロに!

MW WP Form で年を扱うフォームは、
今回のように現在年〜3年後を自動生成すれば、
フォームの保守が圧倒的にラクになります。

本記事で紹介した2つの方法

① functions.php で動的に年のリストを生成(推奨)

  • 最も管理がラク
  • 複数フォームにも使える
  • フィールド名だけ合わせればOK

② フォームのHTML内で PHP 出力する方法

  • シンプルで直感的
  • デザインカスタマイズしやすい
  • 小規模フォームに向いている