Trimite email de activare utilizator după înregistrare
Aș dori să trimit un email tuturor utilizatorilor imediat după înregistrare care să le solicite să acceseze un link din acel email pentru a "activa" adresa de email.
În mod ideal, fiecare cont de utilizator ar trebui să aibă o stare care să indice dacă acest proces a fost finalizat sau nu.
Poate cineva să recomande o metodă prin care să realizez acest lucru?

Pentru procesul de activare, puteți urma următorii pași:
- După cum puteți vedea, coloana
user_activation_key
din tabelulwp_users
. Puteți utiliza această coloană pentru trimiterea linkului de activare al utilizatorului. În timpul înregistrării utilizatorilor, puteți insera un cod anume în acea coloană folosind o interogare SQL personalizată. După ce utilizatorul este înregistrat cu
wp_insert_user()
și returnează un ID în$user_id
, se poate executa o interogare SQL de inserare personalizată:$user_id = wp_insert_user($user_detail); if ( $user_id && !is_wp_error( $user_id ) ) { $code = sha1( $user_id . time() ); global $wpdb; $wpdb->update( 'wp_users', //numele tabelului array( 'user_activation_key' => $code, // șir de caractere ), array( 'ID' => $user_id ), array( '%s', // valoare1 ) ); $activation_link = add_query_arg( array( 'key' => $code, 'user' => $user_id ), get_permalink( /* ID-ul paginii de activare aici*/ )); wp_mail( $user_email, 'SUBJECT', 'Link de activare : ' . $activation_link ); }.
Acest lucru va trimite utilizatorului un link de activare precum
http://example.com/activation-page/?key=CERTAIN_KEY&user=USER_ID
pe adresa lor de email, iar pe pagina de activare puteți rula codul pentru activarea utilizatorilor prin modificarea altei coloaneuser_status
de la 0 la 1.După aceasta, puteți rula o altă actualizare pentru coloana
user_status
prin:global $wpdb; $wpdb->update( 'wp_users', //numele tabelului array( 'user_status' => 1, // întreg ), array( 'ID' => $_GET['user'], //clauză WHERE 'user_activation_key'=>$_GET['key'] //clauză WHERE ), array( '%d', //valoare1 ) );
Apoi puteți permite utilizatorilor care au statusul 1 să se autentifice.
