サポート » 使い方全般 » コメントフォームにselectの必須項目を追加したい

  • 解決済 shinchaya

    (@shinchaya)


    お世話になります。

    コメントフォームにselectの必須項目を追加するコードをfunctions.phpに追記しましたが、
    selectの値(男性または女性)を選んでいなくてもバリデーションエターも表示がなくコメントが送信されてしまいます。
    どこの記述に問題があるでしょうか?

    /** コメント項目 追加 */
    add_filter( ‘comment_form_defaults’, ‘change_comment_form_defaults’);
    function change_comment_form_defaults($default) {
    $commenter = wp_get_current_commenter();
    $default[‘fields’][‘email’] .= ‘<p class=”comment-form-author”>’ .
    ‘<label for=”sex”>’. __(‘性別’) . ‘</label>
    <span class=”required”>*</span>
    <select name=”commenterSex”>
    <option value=””>’. __(‘選択してください’) . ‘</option>
    <option value=”男性” id=”imMan”>’. __(‘男性’) . ‘</option>
    <option value=”女性” id=”imWoman”>’. __(‘女性’) . ‘</option>
    </select></p>

    return $default;
    }

    /** コメント項目 必須化 */
    add_filter( ‘preprocess_comment’, ‘verify_comment_meta_dataSex’ );
    function verify_comment_meta_dataSex($commentdata) {
    if ( ! isset( $_POST[‘commenterSex’] ) )
    wp_die( __(‘性別を選択してください’) );
    return $commentdata;
    }

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    $_POST[‘commenterSex’] の内容がどうなっているか、そしてisset 関数を使うことが適当であるかどうかを確認してみてください。

    トピック投稿者 shinchaya

    (@shinchaya)

    issetは空文字を値があると判断するので空文字が入力されているということにで、エラーになならないんですね。

    (省略)
    if ( !in_array( $_POST[‘commenterSex’], array( ‘男性’, ‘女性’ ) ) )
    (省略)

    上記のように修正して正常に処理されました。ありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「コメントフォームにselectの必須項目を追加したい」には新たに返信することはできません。