IT女子のお気に入りフォルダ

管理人の備忘録と実践を兼ねた(出来るだけ)役に立つ情報を配信するブログです。

[WordPress]Contact Form 7でドロップダウン日付にデフォルトで今日をセット

Contact Form 7で申し込みフォームにおいて、ドロップダウンで用意した日付項目に今日の日付をデフォルトとしてセットする方法です。
そもそもContact Form 7 DatePickerが使えれば簡単なことなのですが、今回はサーバーの関係上、WordPressのバージョンが3.1.4と古かったためにこのような対応が必要となりました。

Contact Form 7 の対象項目の記述

<dt>日付</dt>
<dd>
[select pickup_m default:1 "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12"]月
[select pickup_d default:1 "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" "30" "31"]日 
</dd>

functions.phpに以下を追加

function my_form_tag_filter($tag) {
	if (!is_array($tag))
	return $tag;

	//今日の日付を取得
	$today_m = date('n');
	$today_d = date('j');

	//取得した今日の日付をデフォルト値としてセット
	$name = $tag['name'];
	if ($name == 'custom_m') {
		$tag['options'][0] = 'default:'.$today_m;
	}
	if ($name == 'custom_d') {
		$tag['options'][0] = 'default:'.$today_d;
	}
	return $tag;
}
add_filter('wpcf7_form_tag', 'my_form_tag_filter', 11);

6・7行目:今日の日付を$today_m、$today_dに先頭にゼロを付けないフォーマットでセット
12・15行目:それぞれをContact Form 7の対象の項目にデフォルト値としてセット

Contact Form 7のテキストエリアにデフォルト値をセットする場合は、

$tag['values'] = (array) $default_text;

といったふうになりますが、今回はドロップダウンなので「values」ではなく「options」にセットしています。

[0]の部分はオプションの順番(任意)なので注意が必要です。
例えば、次のようなタグで作成している場合は、

[select* ctf7-custom id:ctf7-custom default:2 "セレクト1" "セレクト2" "セレクト3"]

オプションの1つ目にid、2つ目にdefaultを設定しているので、さっきのように$tag[‘options’][0]に値をセットするとidにセットすることになってしまいます。この場合であれば$tag[‘options’][1]にするとデフォルト値としてセットできます。

参考サイト

[WordPress]ContactForm7でリンク元によってドロップダウンのデフォルト値を変える
WordPress Contact Form 7 GETで値を渡してselectを選択する方法。