Tajuk yang ditulis semula bagi gesaan ralat pengesahan kotak pilihan tersuai dalam pendaftaran Woocommerce ialah: Selesaikan masalah gesaan ralat pengesahan kotak semakan tersuai dalam pendaftaran Woocommerce
P粉318928159
P粉318928159 2023-09-03 12:06:38
0
2
545
<p>Dalam WooCommerce, saya menambahkan kotak pilihan "Privasi" tersuai pada borang pendaftaran pelanggan menggunakan kod berikut: </p> <pre class="brush:php;toolbar:false;">//Tambah kotak pilihan pada borang pendaftaran add_action( 'woocommerce_register_form', 'add_privacy_checkbox_registration' ); fungsi 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="form-row validate-required"> <label class="woocommerce-form__label woocommerce-form__label-for-kotak pilihan"> <jenis input="kotak semak"kelas="woocommerce-form__input woocommerce-form__input-checkbox name="privacy_policy" -dasar" <span class="woocommerce-privacy-policy-checkbox-text"><?php echo $checkbox_text ?<</span> ?php esc_attr_e( 'diperlukan', 'woocommerce' );>">*</abbr> </label> <jenis input="nama tersembunyi"bidang dasar" </p> </div> <?php } // sahkan add_filter( 'woocommerce_registration_errors', 'privacy_checkbox_registration_validation', 10, 3 ); fungsi privacy_checkbox_registration_validation( $errors ) { if( is_checkout() ) { kembalikan $error; } jika ( kosong( $_POST[ 'dasar_privasi' ] ) ) { $errors->add( 'privacy_policy_reg_error', 'Вам нужно принять политику конфиденциальности.' ); } kembalikan $error; } </pra> <p>Kod itu sah. Kotak semak ditambah. Logik kotak semak juga berfungsi. Ini bermakna jika anda tidak menandai kotak tersebut, pendaftaran pengguna tidak akan dapat dilakukan. </p> <p>Tetapi ada masalah. Jika kotak pilihan tidak diklik, teks ralat tidak muncul pada skrin...</p> <p>Ini ialah halaman yang dimaksudkan di tapak saya - Halaman Masalah</p> <p>Ada idea? </p>
P粉318928159
P粉318928159

membalas semua(2)
P粉464088437

Adakah anda mencubanya tanpa ini?

if( is_checkout() ) {
    return $errors;
}

Memandangkan penapis ialah penapis berdaftar, nampaknya sekeping kod itu tidak diperlukan kerana ia tidak akan dipanggil semasa pembayaran. Cuba ulas blok kod itu dan uji pendaftaran sekali lagi. Jika ia berfungsi, uji proses pembayaran juga untuk memastikan ia tidak salah.

return $errors;会结束函数,错误不会被添加。当然,我会假设is_checkout() akan mengembalikan palsu semasa pendaftaran, tetapi mungkin semasa pendaftaran ia kembali benar atas sebab tertentu?

Apa pun, ia hanya satu percubaan.

P粉231112437

Saya telah menguji kod anda di tapak ujian dan bagi saya ia berfungsi dengan baik, ia menunjukkan ralat apabila kotak pilihan dinyahtandai...

Kini terdapat sesuatu yang hilang dalam fungsi terakhir, anda mengisytiharkan 3 parameter di bahagian add_filter(), jadi 2 hilang. Pada masa yang sama saya juga memudahkan kod anda

Ini hanyalah kod yang diubah suai untuk fungsi terakhir:

// 验证
add_filter( 'woocommerce_registration_errors', 'privacy_checkbox_registration_validation', 999, 3 );
function privacy_checkbox_registration_validation( $errors, $username, $email ) {
    // 不在结账页面
    if( ! is_checkout() && empty( $_POST[ 'privacy_policy' ] ) ) {
        $errors->add( 'privacy_policy_error', 'Вам нужно принять политику конфиденциальности.' );
    }
    return $errors;
}

Sekarang saya tidak pasti sama ada ini menyelesaikan masalah anda kerana halaman dimuat semula selepas penyerahan di tapak anda supaya mesej ralat tidak mempunyai masa untuk dipaparkan.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan