web-dev-qa-db-fra.com

Comment contourner l'erreur "cette adresse email a déjà été utilisée"?

L'erreur suivante peut se produire si une inscription précédente reste en attente avec une adresse électronique en conflit.

Cette adresse e-mail a déjà été utilisée. Veuillez vérifier votre boîte de réception pour un email d'activation. Il ne sera disponible que dans quelques jours.

L'erreur liée au nom d'utilisateur ressemble à ce qui suit.

Ce nom d'utilisateur est actuellement réservé mais peut être disponible dans quelques jours.

4
here
  1. Connectez-vous en tant qu'administrateur WordPress
  2. Naviguez pour ajouter un nouvel utilisateur
  3. Case à cocher pour ignorer la confirmation par courrier électronique
  4. Ajouter l'utilisateur avec une adresse email différente
  5. Modifier l'adresse e-mail de l'utilisateur au résultat souhaité

Pour une erreur de nom d'utilisateur similaire, voir Comment puis-je annuler la réservation d'un enregistrement de nom d'utilisateur en attente?

Le délai d'attente est de 2 jours après un conflit et des tickets de suivi pour clarifier ce processus existent actuellement ici et ici .

3
here

Lorsque j'ajoute un nouvel utilisateur avec une adresse électronique différente, le message d'erreur suivant s'affiche: Ce nom d'utilisateur est actuellement réservé mais peut être disponible dans quelques jours.

Pour moi, j'ai supprimé la ligne de la base de données dans la table wp_signups où user_login était égal au nom d'utilisateur. Essentiellement:

delete from wp_signups where user_login = 'abc';

Ensuite, j'ai pu rajouter l'utilisateur.

1
Marty

Pour contourner l'erreur "cette adresse e-mail a déjà été utilisée", nous pouvons créer un plug-in qui contourne effectivement le contrôle. Le plugin fonctionnera en trois parties, en utilisant trois crochets différents.

pre_user_login filtre un nom d'utilisateur après sa désinfection. Nous utiliserons ce crochet pour saisir l'utilisateur. L'e-mail est particulièrement intéressant.

pre_user_email filtre le courrier électronique d’un utilisateur avant sa création ou sa mise à jour. Nous utiliserons ce crochet pour modifier l’email en quelques caractères aléatoires.

user_register se déclenche immédiatement après l'enregistrement d'un nouvel utilisateur. Nous utiliserons ce crochet pour mettre à jour manuellement le courrier électronique de l'utilisateur une fois celui-ci enregistré.

add_filter( 'pre_user_email', [ new wpse_212671(), 'pre_user_login' ] );
class wpse_212671 {
  protected $user;
  public function pre_user_login( $user ) {
    $this->user = $user;
    if( isset( $user[ 'ID' ] ) || ! get_user_by( 'email', $user[ 'user_email' ] ) {
      return $user;
    }
    add_filter( 'pre_user_email', [ $this, 'pre_user_email' ] );
    add_action( 'user_register',  [ $this, 'user_register' ] );
  }
  public function pre_user_email( $email ) {
    return $this->generate_random_string();
  }
  public function user_register( $user_id ) {
    global $wpdb;
    $table = $wpdb->prefix . 'users';
    $wpdb->query( $wpdb->prepare(
      "UPDATE %s 
      SET user_email = %s
      WHERE user_login = %s", 
      $table,
      $this->user[ 'user_email' ], 
      $this->user[ 'user_login' ]
    ) );
  }
  //* Code slightly modified from http://stackoverflow.com/a/13212994/6077935
  protected function generate_random_string( $length = 40 ) {
    return substr( str_shuffle( str_repeat( 
      $x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
      ceil( $length / strlen( $x ) )
    ) ), 1, $length );
  }
}
1
Nathan Johnson

Il existe un plugin utile appelé "User Activation Keys" qui ajoute un élément de menu à l'interface des utilisateurs du réseau:

https://wordpress.org/plugins/user-activation-keys/

Cela permet de modifier/supprimer/approuver les demandes d'activation des utilisateurs et, par la suite, les adresses électroniques/noms d'utilisateur réservés.

0
jeffmcneill