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

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);

● 修正ポイント

▼ フォームIDの調べ方

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

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

方法①のメリット

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

方法②:フォーム内の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年後までをループで出力しているだけです。

方法②のメリット

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

■ name 属性の確認が重要!

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

<select name="year">

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

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

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

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

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

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

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

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