使用Ajax发送自定义电子邮件-woocommerce / Wordpress用户注册

时间:2019-01-03 10:15:12

标签: php ajax wordpress email woocommerce

我当前正在构建一个自定义的登录/注册表单,该表单可以登录用户或使用ajax注册用户。我可以登录用户,也可以创建用户,但是,我在用户注册后发送激活电子邮件时遇到问题。

我的意图是在注册时向新用户发送“帐户激活”电子邮件。该电子邮件将包含指向我网站上某个页面的链接,如果访问该页面,则该链接将运行代码以将自定义用户meta'is_activated'从0更新为1,以指示该用户已验证其电子邮件。

正在使用以下代码创建新用户。这是从我的ajax脚本调用的。

function ajax_create_new_user () {
    $new_account_username = stripcslashes($_POST['new_account_username']);
    $new_account_email = strtolower(stripcslashes($_POST['new_account_email']));
    $new_account_password = $_POST['new_account_password'];
    $new_account_first_name = $_POST['new_account_first_name'];
    $new_account_last_name = $_POST['new_account_last_name'];

    $user_id = wp_create_user( $new_account_username, $new_account_password, $new_account_email );

    if ( is_wp_error( $user_id ) ) {
        echo json_encode( $user_id->get_error_message() );
        die();
    }

    wp_update_user(
        array(
            'ID' => $user_id,
            'role' => 'customer',
            'display_name' => $new_account_first_name . " " . $new_account_last_name
            )
    );

    $data = array(
                  'first_name'            => $new_account_first_name,
                  'last_name'             => $new_account_last_name,
                  'billing_first_name'    => $new_account_first_name,
                  'billing_last_name'     => $new_account_last_name
                  );
    foreach ($data as $meta_key => $meta_value ) {
        update_user_meta( $user_id, $meta_key, $meta_value );
    }

然后我将使用以下内容自动登录用户:

 $creds = array(
                'user_login'    => $new_account_username,
                'user_password' => $new_account_password,
                'remember'      => false,
                   );

    $user_login = wp_signon($creds, false);

    if ( is_wp_error( $user ) ) {
        echo json_encode( $user->get_error_message() );
        die();
    }

在此之后,我正在尝试构建代码以向用户发送电子邮件。 到目前为止,我已经找到并使用了 wp_mail()函数。该功能正在运行,我可以向新用户发送电子邮件。

$code = md5(time());
    $security_string = array('id' => $user_id, 'securitycode' => $code );

    update_user_meta( $user_id, 'is_activated', 0);
    update_user_meta( $user_id, 'activation_code', $code);
    $url = get_site_url(). '/verify/?p=' .base64_encode( serialize($security_string));
    $html = ( 'Please click <a href="'.$url.'">here</a> to verify your email address.' );

    wp_mail( $new_account_email, 'Activate your Account', $html);

不幸的是,我不确定如何构建自定义电子邮件模板(HTML和纯文本格式),该模板将由我的代码调用并填充。

我发现本文( click here )显示了如何创建自定义WooCommerce电子邮件,但是我将如何传递新用户信息(电子邮件,安全URL)等)发送到此电子邮件,以便填充并发送?

任何信息都会有用,谢谢!

乔什

0 个答案:

没有答案