別のワードプレスでラジオボタンの選択を必須にしたいと思い、ネットで検索したところやっぱり方法はありました。私がそれらの情報をもとに試行錯誤して、上手くできた方法を紹介します。
ラジオボタンの選択を必須にしようとしたけれど、なぜかうまくできなかった
Contact Form 7 でフォームを入力選択必須にする場合は、以下のように部品名の後ろにアスタリスク(*)を付けますが、
[text* form_text]
[email* form_email]
ラジオボタンだけは以下のようにアスタリスク(*)を付けるだけでは選択必須にすることはできません。
[radio* form_radio "ラジオボタン1" "ラジオボタン2"]
Contact Form 7 のラジオボタンを選択必須にするには、ご利用のテーマのfunctions.php に以下のコードを追加します。
add_action( 'wpcf7_init', 'wpcf7_add_shortcode_radio_required' );
function wpcf7_add_shortcode_radio_required() {
wpcf7_add_shortcode( array( 'radio*' ),
'wpcf7_checkbox_shortcode_handler', true );
}
add_filter( 'wpcf7_validate_radio*', 'wpcf7_checkbox_validation_filter', 10, 2 );
なぜ、このような処理をわざわざ追加しないと必須にならないのかというと、ラジオボタンの時点で必須項目である、という考えがあるようなのです。
でも、この処理をしても、私の環境では必須項目にならなかったんですよね。
なので、次の方法を試しました。
ラジオボタンの初期値をあらかじめ設定しておく
例えば以下のようなラジオボタンがあるとして、
[radio form_radio "項目1" "項目2" "項目3" "項目4" "項目5"]
「項目1」を初期値で選択された状態(checked)にしたい場合は、以下のように指定します。
[radio form_radio default:1 "項目1" "項目2" "項目3" "項目4" "項目5"]
※「default:1」が、オプションの「1番目」を初期選択状態(checked)にするという意味です。
ラジオボタンは一度選択したら、すべてのボタンの選択状態を解除されたにすることは絶対にできないので、わざわざラジオボタンを必須にする処理を追加をしなくても、初期値を設定しておくことで、実質的に必須にすることができます。