it-swarm.com.de

Aktivierungs-E-Mail nach der Anmeldung an den Benutzer senden

Ich möchte allen Benutzern sofort nach der Anmeldung eine E-Mail senden, bei der sie auf einen Link in dieser E-Mail klicken müssen, um ihre E-Mail-Adresse zu "aktivieren".

Idealerweise hat jedes Benutzerkonto einen Status, der anzeigt, ob dieser abgeschlossen wurde oder nicht.

Kann mir jemand einen Weg empfehlen, dies zu erreichen?

1
Josh

Für den Aktivierungsprozess können Sie folgende Schritte ausführen:

  1. Wie Sie sehen können, befindet sich die Spalte user_activation_key in der Tabelle wp_users. Sie können diese Spalte zum Senden des Benutzeraktivierungslinks verwenden.
  2. Während Sie Benutzer anmelden, können Sie mit custom sql bestimmten Code in diese Spalte einfügen. Nachdem der Benutzer mit wp_insert_user() angemeldet ist und eine ID an $user_id zurückgibt, kann eine benutzerdefinierte SQL-Einfügung ausgeführt werden

        $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 );
        }. 
    

    Dadurch wird dem Benutzer ein Aktivierungslink wie http://example.com/activation-page/?key=CERTAIN_KEY&user=USER_ID an seine E-Mail-Adresse gesendet. Auf der Aktivierungsseite können Sie Code zum Aktivieren der Benutzer ausführen, indem Sie eine andere Spalte user_status von 0 auf 1 ändern.

  3. Danach können Sie ein weiteres Update für die Spalte user_status von ausführen

    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    )
    );
    

Dann können Sie Benutzern mit Status 1 erlauben, sich anzumelden.

4
Alok Shrestha