注册后向用户发送激活电子邮件

时间:2017-05-01 作者:Josh

我想在所有用户注册后立即向他们发送一封电子邮件,要求他们单击该电子邮件中的链接“激活”他们的电子邮件地址。

理想情况下,每个用户帐户都有一个状态,显示此操作是否已完成。

有谁能为我推荐一种实现这一目标的方法吗?

1 个回复
最合适的回答,由SO网友:Alok Shrestha 整理而成

对于激活过程,您可以遵循以下步骤:

如你所见user_activation_key 中的列wp_users 桌子您可以利用该列发送用户激活链接wp_insert_user() 并将id返回给$user_id, 可以运行自定义insertsql

    $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的用户登录。

相关推荐

自定义wp_new_user_Notify_Email()

我正在尝试自定义发送给用户的通知电子邮件,其中包含设置密码的链接。目前,我已经在URL上设置了自定义用户注册和登录表单site.com/register 和site.com/login 分别地注册后,wordpress将发送一封电子邮件,其中包含以下链接,要求设置密码。site.com/wp-login.php?action=rp&key=XYieERXh3QinbU4VquB2&login=user%40gmail.com我希望它将此url替换为site.com/login?action