在“新用户通知电子邮件”中包含用户数据

时间:2019-12-20 作者:Russ Powers

我正在尝试创建一个功能,在新用户注册时向管理员发送电子邮件。我希望电子邮件包含用户的名字、姓氏、电子邮件地址和通过WooCommerce添加的账单信息。这是我到目前为止所拥有的,但出于某种原因,$id和$email是电子邮件中显示的唯一变量,而不是其他变量。。我做错了什么?英雄联盟

function admin_notification($user_id) { 
    $user = get_userdata( $user_id );
    $id = $user->id;
    $email = $user->user_email;
    $firstname = $user->first_name;
    $lastname = $user->last_name;
    $phone = get_user_meta($id, \'billing_phone\', true);
    $address = get_user_meta($id, \'billing_address_1\', true);
    $city = get_user_meta($id, \'billing_city\', true);
    $state = get_user_meta($id, \'billing_state\', true);
    $zip = get_user_meta($id, \'billing_postcode\', true);

    $headers = array(\'Content-Type: text/html; charset=UTF-8\',\'From: My WordPress Site <[email protected]>\');
    $message = \'<p>\'. $firstname .\' \'. $lastname .\' has requested registration to the website. Please verify their account as soon as possible.</p><hr /><p><strong>First Name:</strong> \'.$firstname.\'<br><strong>Last Name:</strong> \'.$lastname.\'<br><strong>Email Address:</strong> \'.$email.\'<br><strong>Phone Number:</strong> \'.$phone.\'<br><strong>Address:</strong><br>\'.$address.\', \'.$city.\' \'.$state.\' \'.$zip.\'</p><br><table width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td><table border="0" cellspacing="0" cellpadding="0"><tr><td bgcolor="green" style="padding: 12px 18px 12px 18px; -webkit-border-radius:3px; border-radius:3px" align="center"><a href="https://example.com/wp-admin/user-edit.php?user_id=\'.$id.\'" target="_blank" style="font-size: 16px; font-family: Helvetica, Arial, sans-serif; font-weight: normal; color: #ffffff; text-decoration: none; display: inline-block;">Verify User</a></td></tr></table></td></tr></table>\';

    wp_mail(\'[email protected]\', \'New Customer Registration\', $message, $headers);
}

add_action(\'user_register\', \'admin_notification\', 10, 1); 

2 个回复
SO网友:TomC

我不确定WooCommerce是如何添加这些字段的,但我怀疑它在user\\u register表单之后使用了add\\u user\\u meta之类的东西。试着用这种方式抓住它:

if ( isset( $_POST[\'first_name\'] ) ) {
    $first_name = $_POST[\'first_name\'];
}

SO网友:yannibmbr

也许可以尝试使用wp_new_user_notification()函数。新用户注册时会触发该功能。我的感觉是,您需要的所有数据都将可用以发送新消息。在我发布的链接中有一个很好的例子。我希望这有帮助!

相关推荐

无法修改标头信息-已由Pluggable.php发送的标头

我正在尝试开发一个简单的插件,但我遇到了一个问题:我有一个自定义插件WP_List_Table 在管理页面中,但当我单击“编辑行”或“删除行”之类的按钮时,它会执行一些预期的操作,并尝试使用刷新页面wp_redirect(). 这导致了一个问题:Warning: Cannot modify header information - headers already sent by (output started at /opt/lampp/htdocs/wordpress/wp-includes/forma