web-dev-qa-db-fra.com

Envoyer un e-mail d'activation à l'utilisateur après l'inscription

Je souhaite envoyer un courrier électronique à tous les utilisateurs immédiatement après leur inscription, leur demandant de cliquer sur un lien contenu dans ce courrier électronique pour "activer" leur adresse électronique.

Idéalement, chaque compte d'utilisateur aurait un statut indiquant si cela avait été terminé ou non.

Quelqu'un peut-il me recommander un moyen d'accomplir cela?

1
Josh

Pour le processus d'activation, vous pouvez suivre les étapes suivantes:

  1. Comme vous pouvez le voir, la colonne user_activation_key de la table wp_users. Vous pouvez utiliser cette colonne pour envoyer le lien d'activation de l'utilisateur.
  2. Lors de l'inscription des utilisateurs, vous pouvez insérer un certain code dans cette colonne avec SQL personnalisé. Une fois que l'utilisateur est inscrit avec wp_insert_user() et renvoie un identifiant à $user_id, un insert personnalisé SQL peut être exécuté.

        $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', //table name     
                    array( 'user_activation_key' => $code,  // string    ),       
                    array( 'ID' =>    $user_id ),     
                    array( '%s',    // value1     )
                );
    
            $activation_link = add_query_arg( array( 'key' => $code, 'user' => $user_id ), get_permalink( /* your activation page id here*/ ));  
    
            wp_mail( $user_email, 'SUBJECT', 'Activation link : ' . $activation_link );
        }. 
    

    Cela enverra à l'utilisateur un lien d'activation tel que http://example.com/activation-page/?key=CERTAIN_KEY&user=USER_ID dans son courrier électronique. Sur la page d'activation, vous pouvez exécuter le code permettant d'activer les utilisateurs en modifiant une autre colonne user_status de 0 à 1.

  3. Après cela, vous pouvez exécuter une autre mise à jour pour la colonne user_status en

    global $wpdb;   
    
    $wpdb->update( 
        'wp_users', //table name     
         array( 'user_status' => 1, // integer   ),       
         array( 'ID' =>    $_GET['user'], //where clause
           'user_activation_key'=>$_GET['key'] //where clause
         ), 
         array( '%d', //value1    )
    );
    

Vous pouvez ensuite autoriser les utilisateurs ayant le statut 1 à se connecter.

4
Alok Shrestha