Отправка email для активации пользователя после регистрации
Я хочу отправлять email всем пользователям сразу после регистрации, в котором будет ссылка для "активации" их email адреса.
В идеале, каждая учетная запись пользователя должна иметь статус, показывающий, была ли выполнена активация или нет.
Может кто-то порекомендовать способ реализовать это?

Для процесса активации вы можете выполнить следующие шаги:
- Как вы можете видеть столбец
user_activation_key
в таблицеwp_users
. Вы можете использовать этот столбец для отправки ссылки активации пользователя. Во время регистрации пользователей вы можете вставить определенный код в этот столбец с помощью пользовательского 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.После этого вы можете выполнить еще одно обновление для столбца
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 входить в систему.
