我当前正在构建一个自定义的登录/注册表单,该表单可以登录用户或使用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)等)发送到此电子邮件,以便填充并发送?
任何信息都会有用,谢谢!
乔什