登録後すぐにすべてのユーザーに電子メールを送信したいのですが、電子メールアドレスを「有効にする」には、その電子メール内のリンクをクリックする必要があります。
理想的には、各ユーザーアカウントは、これが完了したかどうかを示すステータスを持ちます。
誰かが私がこれを達成するための方法をお勧めできますか?
アクティベーションプロセスのためにあなたは次のステップに従うことができます:
user_activation_key
テーブルのwp_users
列。その列をユーザーアクティベーションリンクの送信に使用できます。ユーザー登録時に、カスタムSQLを使用して特定のコードをその列に挿入できます。ユーザーがwp_insert_user()
でサインアップして$user_id
に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', //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 );
}.
これにより、ユーザーにhttp://example.com/activation-page/?key=CERTAIN_KEY&user=USER_ID
のようなアクティベーションリンクが電子メールに送信され、アクティベーションページで別の列user_status
を0から1に変更してユーザーをアクティブにするためのコードを実行できます。
この後、user_status
列の別の更新を実行することができます。
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 )
);
あなたよりもステータス1を持つユーザーにサインインを許可することができます。