ホームページ  >  に質問  >  本文

Woocommerce 登録のカスタム チェックボックス検証エラー プロンプトの書き換えられたタイトルは次のとおりです: Woocommerce 登録のカスタム チェックボックス検証エラー プロンプトの問題を解決する

<p>WooCommerce で、次のコードを使用して顧客登録フォームにカスタムの「プライバシー」チェックボックスを追加しました。 <pre class="brush:php;toolbar:false;">//登録フォームにチェックボックスを追加 add_action( 'woocommerce_register_form', 'add_privacy_checkbox_registration' ); 関数 add_privacy_checkbox_registration() { $checkbox_text = sprintf( '%s <a href="%s"><strong>%s</strong></a>', __( 'Я прочитал и согласен с' ), esc_url( site_url('/politic-conf/') ), __( 'политикой конфиденциальности' ) ); ?> <div class="woocommerce-privacy-policy-wrapper"> <p class="フォーム行の検証が必要"> <label class="woocommerce-form__label woocommerce-form__label-for-checkbox チェックボックス"> <input type="checkbox" class="woocommerce-form__input woocommerce-form__input-checkbox input-checkbox" name="privacy_policy" <?php selected( false, true ); ?> id="プライバシー-ポリシー" /> <span class="woocommerce-privacy-policy-checkbox-text"><?php echo $checkbox_text; ?></span> <abbr class="required" title="< ?php esc_attr_e( 'required', 'woocommerce' ); ?>">*</abbr> </ラベル> <input type="hidden" name="policy-field" value="1" /> </p> </div> <?php } // 確認する add_filter( 'woocommerce_registration_errors', 'privacy_checkbox_registration_validation', 10, 3 ); 関数privacy_checkbox_registration_validation( $errors ) { if( is_checkout() ) { $errors を返します。 } if ( empty( $_POST[ 'privacy_policy' ] ) ) { $errors->add( 'privacy_policy_reg_error', 'Вам нужно принять политику конфиденциальности.' ); } $errors を返します。 } </pre> <p>コードは有効です。チェックボックスが追加されました。チェックボックスのロジックも機能します。 チェックを入れないとユーザー登録ができません。 </p> <p>しかし問題があります。チェックボックスがクリックされていない場合、エラー テキストは画面に表示されません...</p> <p>これは私のサイトの問題のページです - 問題ページ</p> <p>何かアイデアはありますか? </p>
P粉318928159P粉318928159385日前465

全員に返信(2)返信します

  • P粉464088437

    P粉4640884372023-09-04 11:32:09

    これなしで試してみましたか?

    リーリー

    フィルターは登録済みフィルターなので、チェックアウト時に呼び出されないため、そのコードは不要のようです。そのコード ブロックをコメント アウトして、登録を再度テストしてみてください。正常に動作する場合は、チェックアウト プロセスもテストして、問題が発生しないことを確認します。

    return $errors;関数は終了し、エラーは追加されません。もちろん、is_checkout() は登録時に false を返すと思いますが、登録時に何らかの理由で true を返す可能性があります。

    要するに、これは単なる試みです。

    返事
    0
  • P粉231112437

    P粉2311124372023-09-04 10:04:20

    テスト サイトでコードをテストしましたが、私にとっては問題なく動作しましたが、チェックボックスがオフの場合はエラーが表示されます...

    最後の関数には何かが欠けています。add_filter() 部分で 3 つのパラメーターを宣言したため、2 つが欠落しています。コードも簡素化しました

    これは最後の関数の変更されたコードです:

    リーリー

    あなたのサイトでは送信後にページがリロードされるため、エラー メッセージが表示される時間がないため、これで問題が解決するかどうかはわかりません。

    返事
    0
  • キャンセル返事