ふむふむ。
まずHTMLの仕様的にラジオボタンは必ず入力される前提になっているみたいです。
Contact Form 7 でもそれに則り[radio* itemname] のように * をつけても必須になったりしません。
でも、ラジオボタンは初期値を設定しなければ最初は未入力の状態で表示されますよね?
そうなれば未入力でも送信される可能性がありますよね?
だとしたらチェックしたいもんです。
最新バージョンを適用する
「Contact Form 7」最新版では [radio* itemname] のように * をつけなくても必須チェックしてくれるみたいです。
1 |
[radio yoursex "男" "女"] |
のように書けば初期状態ではどちらにもチェックされておらず、そのまま送信すれば「必須項目に入力してください。」というメッセージが入力項目の下に表示されます。
もし現時点で上記のように書いて必須チェックが動かないのであれば「Contact form 7」を最新にすればいけるかもしれないです。
ちなみにContact form 7の5.1では出来ました。
僕の持っているテスト環境ではContact form 7のバージョン 4.5.1 だったのですが、このバージョンでは必須チェックは動きませんでした。
Contact form 7をバージョンアップするためにはWordPressもバージョンアップする必要があるかもしれないです。
現時点(2019年2月)ではWordPressをバージョンアップすると WordPress 5.0.3 になり、投稿画面などのエディタに「Gutenberg」が適用されてかなり使いにくいです(笑)
慣れの問題かもしれませんが、もし旧エディタに戻したいというのであれば次の記事を参考にしてください。
≫ WordPressのバージョン5をインストールしたらエディタが!!?これ元に戻せるの?
初期状態でチェックされるようにする
お客さんのサイトだから用意にバージョンアップが出来ないなんて場合もあるかと思います。
そのとき「必須チェックが無いならチェックを追加しよう!」って最初は考えるかもしれません。
しかし、HTML的にチェックされていない状態がありえないのであれば最初からチェックしておけばいいと思います。
たぶんradioボタンに関してはこれが正解ですよね?
1 |
[radio yoursex default:1 "男" "女"] |
上のコードのように、「default:1」を書けば「初期状態は1番目の要素にチェックを入れる」となります。
変にいじくり回すより、素直にHTMLの仕様に従ったほうがいいですね。
[radio*]の場合の必須チェックを追加する
この対策方法は多少PHPの知識が必要です。
WordPressのテーマディレクトリの中には function.php というものがあります。
ここはテーマごとのカスタマイズをする場合に機能をちょい足しする場所です。
ここに以下のコードを書きます。
1 2 3 4 5 6 7 8 |
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 ); |
参考: [WP]Contact Form 7 でラジオボタンを選択必須にする方法
radio* のショートコードを追加するカスタマイズになります。
まとめ
一番簡単なのはWordPressとContact Form 7のバージョンアップですね。
バージョンアップなら特別プログラムの知識が無くてもできます。
ただ、バージョンアップするときには現状がそのまま動く保証はありません。
できればバックアップをとり、バージョンアップ後にはサイト全体の動作確認をしましょう。
コメントを残す