web-dev-qa-db-fra.com

Comment autoriser plusieurs utilisateurs enregistrés à avoir le même email?

Comment puis-je permettre à un utilisateur de s'inscrire sur le site et d'ignorer l'erreur WP est renvoyé si l'e-mail est déjà enregistré - "Cet e-mail est déjà enregistré, veuillez en choisir un autre."

J'ai essayé d'écrire mon propre plugin mais ça ne marche pas:

if($errors['field'.$field->id] == 'This email is already registered, please choose another one.')
unset($errors['field'.$field->id]);

Toute aide à ce sujet serait grandement appréciée.

PS.

i) Je sais que ce n'est pas idéal d'autoriser l'enregistrement du même courrier électronique mais je ne peux pas voir une autre solution permettant aux mêmes membres de la famille de s'enregistrer sous différents noms d'utilisateur mais avec le même email de famille.

ii) La réponse à une question précédente ne fonctionnait pas sur un seul site, en utilisant le code

add_filter('pre_user_email', 'skip_email_exist');

c'est pourquoi j'ai dû poser cette question pour une solution à site unique.

1
Michael

Donc, malheureusement, sans révisions majeures du code et de la structure de la base de données, cela n’est pas possible car WordPress stocke le courrier électronique de l’utilisateur dans une ligne "UNIQUE" de la base de données. Le simple fait de réinitialiser le message d'erreur ne résoudra pas ce problème car l'utilisateur n'est pas créé.

4
Nicholas Koskowski

Je suppose que vous avez déjà regardé wp-includes/user.php, auquel je me réfère ci-dessous

Manière la plus simple: commentez la ligne 1691 (EDIT : THIS METHOD IS NOT RECOMMENDED AS IT'S EDITING CORE FILES AND ISN'T FUTURE-PROOF AND SHOULD BE CONSIDERED A LAST RESORT)

Une autre manière: La ligne 1690 users.php a les caractéristiques suivantes:

elseif ( email_exists( $user_email ) ) {
        $errors->add( 'email_exists', __( '<strong>ERROR</strong>: This email is already registered, please choose another one.' ) );
    }

Dans votre exemple de code, vous utilisez $errors['field'.$field->id]. Avez-vous vérifié si $errors['field'.$field->id] existe/est défini? Pas sûr de la syntaxe correcte à utiliser ici, mais vous pouvez vérifier, puis supprimer quelque chose comme $errors['email_exists']

HTH

1
TomC