Inviare email di attivazione all'utente dopo la registrazione

1 mag 2017, 19:17:23
Visualizzazioni: 14K
Voti: 3

Vorrei inviare un'email a tutti gli utenti immediatamente dopo la registrazione che richieda loro di cliccare un link all'interno dell'email per "attivare" il loro indirizzo email.

Idealmente ogni account utente dovrebbe avere uno stato che mostri se questa operazione è stata completata o meno.

Qualcuno può suggerirmi un modo per realizzare questo?

0
Tutte le risposte alla domanda 1
1

Per il processo di attivazione puoi seguire questi passaggi:

  1. Come puoi vedere la colonna user_activation_key nella tabella wp_users. Puoi utilizzare questa colonna per inviare il link di attivazione all'utente.
  2. Durante la registrazione degli utenti puoi inserire un codice specifico in quella colonna con una query SQL personalizzata. Dopo che l'utente si è registrato con wp_insert_user() e viene restituito un id in $user_id, puoi eseguire un inserimento SQL personalizzato

        $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', //nome tabella     
                    array( 'user_activation_key' => $code,  // stringa    ),       
                    array( 'ID' =>    $user_id ),     
                    array( '%s',    // valore1     )
                );
    
            $activation_link = add_query_arg( array( 'key' => $code, 'user' => $user_id ), get_permalink( /* ID della tua pagina di attivazione qui*/ ));  
    
            wp_mail( $user_email, 'OGGETTO', 'Link di attivazione : ' . $activation_link );
        }. 
    

    Questo invierà all'utente un link di attivazione come http://example.com/pagina-attivazione/?key=CHIAVE_SPECIFICA&user=ID_UTENTE alla sua email e nella pagina di attivazione puoi eseguire il codice per attivare gli utenti modificando un'altra colonna user_status da 0 a 1.

  3. Dopo questo puoi eseguire un altro aggiornamento per la colonna user_status con

    global $wpdb;   
    
    $wpdb->update( 
        'wp_users', //nome tabella     
         array( 'user_status' => 1, // intero   ),       
         array( 'ID' =>    $_GET['user'], //clausola where
           'user_activation_key'=>$_GET['key'] //clausola where
         ), 
         array( '%d', //valore1    )
    );
    

Poi puoi permettere agli utenti con status 1 di effettuare il login.

2 mag 2017 12:23:25
Commenti

Magnifico. Esattamente quello che cercavo! Grazie.

Josh Josh
3 mag 2017 15:59:38