Come risolvere l'errore "questo indirizzo email è già stato utilizzato"?

22 dic 2015, 22:46:46
Visualizzazioni: 20.7K
Voti: 6

Il seguente errore può verificarsi se una registrazione precedente rimane in sospeso con un indirizzo email in conflitto.

Questo indirizzo email è già stato utilizzato. Controlla la tua casella di posta per l'email di attivazione. Diventerà disponibile tra qualche giorno se non fai nulla.

L'errore correlato per il nome utente appare come segue.

Questo nome utente è attualmente riservato ma potrebbe essere disponibile tra qualche giorno.

0
Tutte le risposte alla domanda 6
1

Quando aggiungo un nuovo utente con un indirizzo email diverso, ricevo il messaggio di errore: Questo nome utente è attualmente riservato ma potrebbe essere disponibile tra un paio di giorni.

Nel mio caso, ho rimosso la riga dal database nella tabella wp_signups dove user_login corrispondeva al nome utente. In sostanza:

delete from wp_signups where user_login = 'abc';

Dopodiché sono stato in grado di riaggiungere l'utente.

Suggerimento di modifica di @aubreypwd: Inoltre, gli amministratori (solo amministratori di rete in un'installazione MU o di rete) hanno la possibilità di aggiungere utenti senza inviare un'email. Se selezioni questa opzione, eviti questo processo.

1 mag 2017 22:40:30
Commenti

Aggiungerei anche dei dettagli per assicurarsi che la prossima volta che provi ad aggiungere l'utente, tu clicchi "bypass email confirmation" per completare questa risposta. È una risposta tecnica molto valida e il percorso che utilizzo anch'io.

aubreypwd aubreypwd
26 ott 2019 00:21:23
0
  1. Accedi come amministratore WordPress
  2. Vai alla sezione per aggiungere un nuovo utente
  3. Seleziona la casella per bypassare la conferma via email
  4. Aggiungi l'utente con un indirizzo email diverso
  5. Modifica l'indirizzo email dell'utente con quello desiderato

Per l'errore di nome utente simile, consulta Come posso annullare la prenotazione di un nome utente in attesa di registrazione?

Il periodo di timeout è di 2 giorni dopo un conflitto, e i ticket trac per chiarire questo processo esistono attualmente qui e qui.

22 dic 2015 22:46:46
1

Per aggirare l'errore "quell'indirizzo email è già stato utilizzato", possiamo creare un plugin che bypassi efficacemente il controllo. Il plugin funzionerà in tre parti, utilizzando tre diversi hook.

pre_user_login filtra un nome utente dopo che è stato sanificato. Utilizzeremo questo hook per ottenere l'utente, con particolare interesse per l'email.

pre_user_email filtra l'email di un utente prima che venga creato o aggiornato. Utilizzeremo questo hook per modificare l'email in alcuni caratteri casuali.

user_register viene attivato immediatamente dopo la registrazione di un nuovo utente. Utilizzeremo questo hook per aggiornare manualmente l'email dell'utente dopo la registrazione.

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' ]
    ) );
  }
  //* Codice leggermente modificato da 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 mag 2017 23:48:51
Commenti

Quindi questo mi permetterà di rimuovere un utente completamente senza dover accedere al database e rimuovere manualmente gli utenti da wp_signups?

Chef Mike Chef Mike
4 giu 2017 23:46:21
1

Esiste un plugin utile chiamato "User Activation Keys" che aggiunge una voce di menu all'interfaccia degli Utenti della Rete:

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

Questo permette di modificare/eliminare/approvare le richieste di attivazione degli utenti e successivamente gli indirizzi email/nomi utente riservati.

15 ago 2018 08:15:39
Commenti

Funziona con il mio vecchissimo WordPress 4.8 e PHP 5.4

aldemarcalazans aldemarcalazans
28 feb 2024 20:25:06
0

Se ti trovi a tuo agio lavorando direttamente con MySQL e preferisci non scrivere codice o installare un plugin solo per questo compito, puoi risolvere questo problema in modo piuttosto semplice.

All'interno del database MySQL del tuo sito, troverai una tabella chiamata { $wpdb->prefix }_signups, dove $wpdb->prefix è il prefisso che hai configurato per WordPress da utilizzare per le tabelle del database. (Per impostazione predefinita, questo è wp_.)

Interroga quella tabella usando l'indirizzo email bloccato per trovare il record di registrazione:

SELECT * FROM {$wpdb->prefix}_signups WHERE user_email = '{ indirizzo email }';

Questo dovrebbe restituire il record del tentativo di registrazione per quell'indirizzo email. Successivamente, elimina semplicemente quel record dalla tabella e il gioco è fatto.

6 giu 2022 23:01:56
0

Utilizza il plugin Unconfirmed.

Unconfirmed crea un pannello nella Dashboard sotto il menu Utenti (Amministrazione di Rete > Utenti su Multisite) che mostra un elenco di registrazioni di utenti non attivati. Per ogni registrazione, hai la possibilità di reinviare l'email di attivazione originale o di attivare manualmente l'utente.

3 dic 2023 10:07:43