MW WP From で誕生日を入力する際、指定の範囲の年齢しか入力できないようにしたいという要望がありまして、その関数を作りました。
下の関数でやっていることは、
- 毎年、生年の範囲を修正しなくても、自動的に15歳~80歳の範囲の年しか選べない
- 29歳~30歳の間に空白の選択肢を入れる
- 生月日は、先頭に空白、それぞれ1月~12月、1日~31日を選択出来る
というものです。
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 32 |
add_filter( 'mwform_choices_mw-wp-form-xxx', 'mwform_add_birthday_options', 10, 2 ); //xxxのところは、MW WP Form のフォームIDを入れてください function mwform_add_birthday_options( $children, $atts ) { // 年設定 if ( $atts['name'] === 'birthday_year' ) { $current_year = date( 'Y' ); $start_year = $current_year - 15; $max_year = $current_year - 80; $default_year = $current_year - 30; for ( $i = $max_year; $i <= $start_year; $i++ ) { $children[$i] = $i; if( $i == $default_year ){ $children[''] = ''; } } } // 月設定 if ( $atts['name'] === 'birthday_month' ) { $children[''] = ''; for ( $i = 1; $i <= 12; $i++ ) { $children[$i] = $i; } } // 日設定 if ( $atts['name'] === 'birthday_day' ) { $children[''] = ''; for ( $i = 1; $i <= 31; $i++ ) { $children[$i] = $i; } } return $children; } |
ただ年のところがこの関数だけだと、80歳に相当する年のところが初期値になってしまいます。そこで、29歳~30歳の間に入れた空白を標準にする必要が出てきます。
その関数は以下の通りです。
1 2 3 4 5 6 7 8 9 |
function my_mwform_value_b( $value, $name ) { if ( $name === 'birthday_year' ) { // 設定したいname属性 $value = ''; return $value; } return $value; } // xxxにはフォームのIDが入ります。 add_filter( 'mwform_value_mw-wp-form-40450', 'my_mwform_value_b', 10, 2 ); |
以上、参考にしてください。
カスタマイズの仕方が分からない場合は、私にご依頼ください(有料)。