Cum să rezolvi eroarea "această adresă de email a fost deja utilizată"?

22 dec. 2015, 22:46:46
Vizualizări: 20.7K
Voturi: 6

Următoarea eroare poate apărea dacă o înregistrare anterioară rămâne în așteptare cu o adresă de email conflictuală.

Această adresă de email a fost deja utilizată. Te rugăm să-ți verifici inbox-ul pentru un email de activare. Va deveni disponibilă în câteva zile dacă nu faci nimic.

Eroarea asociată numelui de utilizator arată astfel.

Acest nume de utilizator este momentan rezervat dar poate deveni disponibil în câteva zile.

0
Toate răspunsurile la întrebare 6
1

Când adaug un utilizator nou cu o adresă de email diferită, primesc mesajul de eroare: Acel nume de utilizator este în prezent rezervat, dar poate deveni disponibil în câteva zile.

Pentru mine, am eliminat rândul din baza de date din tabelul wp_signups unde user_login era egal cu numele de utilizator. Mai exact:

delete from wp_signups where user_login = 'abc';

Apoi am putut adăuga din nou utilizatorul.

Sugestie de editare de la @aubreypwd: În plus, administratorii (doar administratorii de rețea într-o instalare MU sau de rețea) au opțiunea de a adăuga utilizatori fără a trimite un email. Dacă bifați această opțiune, evitați acest proces.

1 mai 2017 22:40:30
Comentarii

Aș adăuga și detalii pentru a mă asigura că data viitoare când încerci să adaugi utilizatorul, să dai clic pe "bypass email confirmation" pentru a finaliza acest răspuns. Acesta este un răspuns tehnic foarte bun și este metoda pe care o folosesc și eu.

aubreypwd aubreypwd
26 oct. 2019 00:21:23
0
  1. Autentifică-te ca administrator WordPress
  2. Navighează pentru a adăuga un utilizator nou
  3. Bifează caseta pentru a ocoli confirmarea prin email
  4. Adaugă utilizatorul cu o adresă de email diferită
  5. Editează adresa de email a utilizatorului la rezultatul dorit

Pentru eroarea de nume de utilizator similar, vezi Cum pot anula rezervarea unei înregistrări de nume de utilizator în așteptare?

Perioada de expirare este de 2 zile după un conflict, iar ticheturile trac pentru clarificarea acestui proces există în prezent aici și aici.

22 dec. 2015 22:46:46
1

Pentru a ocoli eroarea "acest email a fost deja utilizat", putem crea un plugin care să ocolească verificarea. Plugin-ul va funcționa în trei părți, utilizând trei hook-uri diferite.

pre_user_login filtrează un nume de utilizator după ce a fost curățat. Vom folosi acest hook pentru a prelua utilizatorul, cu interes deosebit pentru email.

pre_user_email filtrează email-ul unui utilizator înainte ca acesta să fie creat sau actualizat. Vom folosi acest hook pentru a modifica email-ul cu niște caractere aleatorii.

user_register se declanșează imediat după ce un nou utilizator este înregistrat. Vom folosi acest hook pentru a actualiza manual email-ul utilizatorului după înregistrare.

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' ]
    ) );
  }
  //* Cod ușor modificat de la 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 mai 2017 23:48:51
Comentarii

Deci, acest lucru îmi va permite să elimin complet un utilizator fără a fi nevoie să intru în baza de date și să șterg manual utilizatorii din wp_signups?

Chef Mike Chef Mike
4 iun. 2017 23:46:21
1

Există un plugin util numit „User Activation Keys” care adaugă un element de meniu în interfața Utilizatori din Rețea:

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

Acesta permite editarea/ștergerea/aprobarea cererilor de activare a utilizatorilor și, ulterior, a adreselor de email/nume de utilizator rezervate.

15 aug. 2018 08:15:39
Comentarii

A funcționat cu versiunea mea foarte veche de WordPress 4.8, cu PHP 5.4

aldemarcalazans aldemarcalazans
28 feb. 2024 20:25:06
0

Dacă ești confortabil să lucrezi direct în MySQL și preferi să nu scrii cod sau să instalezi un plugin doar pentru această sarcină, poți rezolva această problemă destul de simplu.

În baza de date MySQL a site-ului tău, va exista o tabelă numită { $wpdb->prefix }_signups, unde $wpdb->prefix este prefixul pe care l-ai configurat pentru WP să-l folosească pentru tabelele sale din baza de date. (În mod implicit, acesta este wp_.)

Interoghează acea tabelă folosind adresa de email care este blocată pentru a găsi înregistrarea de înscriere pentru ea:

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

Această interogare ar trebui să returneze înregistrarea încercării de înscriere pentru acea adresă de email. Apoi, pur și simplu șterge (DELETE) acea înregistrare din tabelă, și ai terminat.

6 iun. 2022 23:01:56
0

Folosește plugin-ul Unconfirmed.

Unconfirmed creează un panou în Panoul de control sub meniul Utilizatori (Admin Rețea > Utilizatori în Multisite) care afișează o listă cu înregistrările de utilizatori neactivate. Pentru fiecare înregistrare, ai opțiunea de a retrimite email-ul original de activare sau de a activa manual utilizatorul.

3 dec. 2023 10:07:43