web関連

Contact Form 7でラジオボタンを必須に設定する方法

Contact Form 7でラジオボタンを必須に設定する方法

お客さんから「ラジオボタンのところ必須って書いてあるけど、選択しなくても送れるの直して」と言われたので、「Contact Form 7」でラジオボタンを必須(「radio*」を使えるよう)にした時の備忘録

「radio*」を使えるようにする

function.phpに以下の記述を書いて「radio*」を使えるようにします。

// function.phpに記述
add_action( 'wpcf7_init', 'wpcf7_add_shortcode_radio_required' );
function wpcf7_add_shortcode_radio_required() {
wpcf7_add_shortcode( array( 'radio*' ),
'wpcf7_checkbox_form_tag_handler', true );
}
add_filter( 'wpcf7_validate_radio*', 'wpcf7_checkbox_validation_filter', 10, 2 );
// サンプルコード
[radio* your-choice "dog" "cat" "other"]

これで、「radio*」を使えるようになって、入力無いとエラーメッセージが出るようになります。

補足

サーバーの都合とかで古い「Contact Form 7」を使わなければならず、前述したコードが上手くいかなかったらwpcf7_checkbox_form_tag_handlerの部分を以下に変えてみてください。

// 古い「Contact Form 7」対応
wpcf7_checkbox_shortcode_handler

2015年くらいの記事で紹介してるコードとかで使われているんだけど、↑の古い「Contact Form 7」対応の関数名は現在のバージョンの「Contact Form 7(ver:5.0.3)」では使えなかった。

関数名がバージョンアップして変わったみたい。

参考

▼Contact Form 7のラジオボタンを必須項目に(最新版)
https://seous.info/wp-plugin/4748

関数名が今回みたいに変わることを考慮するなら、デフォルトの値を持たすこともできる

デフォルトの値を持たせるという方法

default:2と指定すれば先頭から2番目の要素を最初から選択した状況にすることができる。

// 「cat」が選択された状態のラジオボタンができる
[radio your-choice default:2 "dog" "cat" "other"]

デフォルトの値を持たせるだけで解決するならこっちの方がいいと思う。
「Contact Form 7」を更新して関数名が変わってたらまた、直さないといけなくなるからね

先輩が以前「radio*」を使えるよう頑張ったみたいだけど、紹介した古い関数名の方を使っていたみたいで挫折した作業が1年くらい経って僕に降りかかってきた。