Trimite email de activare utilizator după înregistrare

1 mai 2017, 19:17:23
Vizualizări: 14K
Voturi: 3

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?

0
Toate răspunsurile la întrebare 1
1

Pentru procesul de activare, puteți urma următorii pași:

  1. După cum puteți vedea, coloana user_activation_key din tabelul wp_users. Puteți utiliza această coloană pentru trimiterea linkului de activare al utilizatorului.
  2. Î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 coloane user_status de la 0 la 1.

  3. 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.

2 mai 2017 12:23:25
Comentarii

Minunat. Exact ceea ce căutam! Mulțumesc.

Josh Josh
3 mai 2017 15:59:38