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
446

Dalam WooCommerce, saya menambahkan kotak pilihan "Privasi" tersuai pada borang pendaftaran pelanggan menggunakan kod berikut:

//Tambah kotak pilihan pada borang pendaftaran add_action( 'woocommerce_register_form', 'add_privacy_checkbox_registration' ); fungsi add_privacy_checkbox_registration() { $checkbox_text = sprintf( '%s %s', __( 'Я прочитал и согласен с' ), esc_url( site_url('/politic-conf/') ), __( 'политикой конфиденциальности' ) ); ?> 

add( 'privacy_policy_reg_error', 'Вам нужно принять политику конфиденциальности.' ); } kembalikan $error; }

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.

Tetapi ada masalah. Jika kotak pilihan tidak diklik, teks ralat tidak muncul pada skrin...

Ini ialah halaman yang dimaksudkan di tapak saya - Halaman Masalah

Ada idea?

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 bahagianadd_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
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!