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 出力する方法
- シンプルで直感的
- デザインカスタマイズしやすい
- 小規模フォームに向いている


SEOタイトルが反映されない原因はこれだった?
1月 8, 2026Contact Form 7でエラーを一つにまとめてポップアップ表示する方法【完全解説】
12月 23, 2025特定のWordPressページでEWWW Image OptimizerのWebP・Lazy Loadを無効化する方法
8月 22, 2025