Отправка email для активации пользователя после регистрации

1 мая 2017 г., 19:17:23
Просмотры: 14K
Голосов: 3

Я хочу отправлять email всем пользователям сразу после регистрации, в котором будет ссылка для "активации" их email адреса.

В идеале, каждая учетная запись пользователя должна иметь статус, показывающий, была ли выполнена активация или нет.

Может кто-то порекомендовать способ реализовать это?

0
Все ответы на вопрос 1
1

Для процесса активации вы можете выполнить следующие шаги:

  1. Как вы можете видеть столбец user_activation_key в таблице wp_users. Вы можете использовать этот столбец для отправки ссылки активации пользователя.
  2. Во время регистрации пользователей вы можете вставить определенный код в этот столбец с помощью пользовательского SQL. После того как пользователь зарегистрирован с помощью wp_insert_user() и возвращает идентификатор в $user_id, можно выполнить пользовательский SQL запрос на вставку

        $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', //имя таблицы     
                    array( 'user_activation_key' => $code,  // строка    ),       
                    array( 'ID' =>    $user_id ),     
                    array( '%s',    // значение1     )
                );
    
            $activation_link = add_query_arg( array( 'key' => $code, 'user' => $user_id ), get_permalink( /* ваш ID страницы активации здесь*/ ));  
    
            wp_mail( $user_email, 'ТЕМА', 'Ссылка для активации : ' . $activation_link );
        }. 
    

    Это отправит пользователю ссылку активации вида http://example.com/activation-page/?key=ОПРЕДЕЛЕННЫЙ_КЛЮЧ&user=ID_ПОЛЬЗОВАТЕЛЯ на их email, и на странице активации вы можете выполнить код для активации пользователей, изменив другой столбец user_status с 0 на 1.

  3. После этого вы можете выполнить еще одно обновление для столбца user_status с помощью

    global $wpdb;   
    
    $wpdb->update( 
        'wp_users', //имя таблицы     
         array( 'user_status' => 1, // целое число   ),       
         array( 'ID' =>    $_GET['user'], //условие where
           'user_activation_key'=>$_GET['key'] //условие where
         ), 
         array( '%d', //значение1    )
    );
    

Затем вы можете разрешить пользователям со статусом 1 входить в систему.

2 мая 2017 г. 12:23:25
Комментарии

Прекрасно. Именно то, что я искал! Спасибо.

Josh Josh
3 мая 2017 г. 15:59:38