Maison > Questions et réponses > le corps du texte
P粉4640884372023-09-04 11:32:09
L'avez-vous essayé sans cela ?
if( is_checkout() ) { return $errors; }
Étant donné que le filtre est un filtre enregistré, il semble que ce morceau de code soit inutile car il ne sera pas appelé lors du paiement. Essayez de commenter ce bloc de code et testez à nouveau l'enregistrement. Si cela fonctionne, testez également le processus de paiement pour vous assurer qu'il ne se passe pas mal.
return $errors;
会结束函数,错误不会被添加。当然,我会假设is_checkout()
renverra faux lors de l'inscription, mais peut-être que lors de l'inscription, il retournera vrai pour une raison quelconque ?
Quoi qu’il en soit, ce n’est qu’une tentative.
P粉2311124372023-09-04 10:04:20
J'ai testé votre code sur un site de test et pour moi ça marche bien, il affiche une erreur lorsque la case est décochée...
Maintenant, il manque quelque chose dans la dernière fonction, vous avez déclaré 3 paramètres dans la partie add_filter()
, il en manque donc 2. En même temps j'ai aussi simplifié votre code
Voici juste le code modifié pour la dernière fonction :
// 验证 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; }
Maintenant, je ne sais pas si cela résout votre problème car la page se recharge après soumission sur votre site, donc le message d'erreur n'a pas le temps de s'afficher.