具有更多字段的 Woocommerce 新客户管理电子邮件通知
Woocommerce new customer administartion email notification with more fields
我尝试进一步开发@danielevigi 在 Woocommerce New Customer Admin Notification Email 发布的代码,以便在新客户注册时创建管理员电子邮件。
我不仅想在电子邮件中添加 $user_login,而且还想在注册表中添加以下字段:
function new_customer_registered_send_email_admin($user_login) {
ob_start();
do_action('woocommerce_email_header', 'New customer registered');
$email_header = ob_get_clean();
ob_start();
do_action('woocommerce_email_footer');
$email_footer = ob_get_clean();
$billing_first_name = '';
$billing_last_name = '';
$billing_phone = '';
$w55 = '';
$user_id = get_user_by('login', $user_login);
if ($user_id)
{
$billing_first_name = get_user_meta($user_id, 'billing_first_name', true);
$billing_last_name = get_user_meta($user_id, 'billing_last_name', true);
$billing_phone = get_user_meta($user_id, 'billing_phone', true);
$w55_card = get_user_meta($user_id, 'w55', true);
if($w55_card === 'y')
{
$tessera = 'Voglio iscrivermi a Wision55';
}
else
{
$tessera = '';
}
}
woocommerce_mail(
get_bloginfo('admin_email'),
get_bloginfo('name').' - New customer registered',
$email_header.
'
<p>The user '.esc_html( $user_login ).' is registered to the website</p>' .
'<p>Nome: <span style="font-size:16px; font-weight: bold;">' .$billing_first_name .'<span></p>
<p>Cognome: <span style="font-size:16px; font-weight: bold;">' .$billing_last_name .'<span></p>
<p>Telehone: <span style="font-size:16px; font-weight: bold;">' .$billing_phone .'<span></p>
<p>Tessera W55: <span style="font-size:16px; font-weight: bold;">' .$tessera .'<span></p>'
.$email_footer
);
}
add_action('new_customer_registered', 'new_customer_registered_send_email_admin');
然而,电子邮件发送时字段为空。我想知道我做错了什么......有人可以帮助我吗?
当使用 get_user_by
时,return 是成功的 WP_User 对象。
您可以使用
检索用户 ID
$user = get_user_by('login', $user_login);
$user_id = $user->ID;
您可以阅读有关此功能的更多信息here
希望有用
你不能在这个地方从 get_user_meta
的用户那里获取数据,因为用户的元数据还没有存储在数据库中,你可以从 post 请求中获取数据$_POST
,例如:
$_POST['billing_first_name'];
也许您可以在 woocommerce_created_customer
挂钩中挂钩电子邮件的发送,check this answer。
我尝试进一步开发@danielevigi 在 Woocommerce New Customer Admin Notification Email 发布的代码,以便在新客户注册时创建管理员电子邮件。
我不仅想在电子邮件中添加 $user_login,而且还想在注册表中添加以下字段:
function new_customer_registered_send_email_admin($user_login) {
ob_start();
do_action('woocommerce_email_header', 'New customer registered');
$email_header = ob_get_clean();
ob_start();
do_action('woocommerce_email_footer');
$email_footer = ob_get_clean();
$billing_first_name = '';
$billing_last_name = '';
$billing_phone = '';
$w55 = '';
$user_id = get_user_by('login', $user_login);
if ($user_id)
{
$billing_first_name = get_user_meta($user_id, 'billing_first_name', true);
$billing_last_name = get_user_meta($user_id, 'billing_last_name', true);
$billing_phone = get_user_meta($user_id, 'billing_phone', true);
$w55_card = get_user_meta($user_id, 'w55', true);
if($w55_card === 'y')
{
$tessera = 'Voglio iscrivermi a Wision55';
}
else
{
$tessera = '';
}
}
woocommerce_mail(
get_bloginfo('admin_email'),
get_bloginfo('name').' - New customer registered',
$email_header.
'
<p>The user '.esc_html( $user_login ).' is registered to the website</p>' .
'<p>Nome: <span style="font-size:16px; font-weight: bold;">' .$billing_first_name .'<span></p>
<p>Cognome: <span style="font-size:16px; font-weight: bold;">' .$billing_last_name .'<span></p>
<p>Telehone: <span style="font-size:16px; font-weight: bold;">' .$billing_phone .'<span></p>
<p>Tessera W55: <span style="font-size:16px; font-weight: bold;">' .$tessera .'<span></p>'
.$email_footer
);
}
add_action('new_customer_registered', 'new_customer_registered_send_email_admin');
然而,电子邮件发送时字段为空。我想知道我做错了什么......有人可以帮助我吗?
当使用 get_user_by
时,return 是成功的 WP_User 对象。
您可以使用
检索用户 ID$user = get_user_by('login', $user_login);
$user_id = $user->ID;
您可以阅读有关此功能的更多信息here
希望有用
你不能在这个地方从 get_user_meta
的用户那里获取数据,因为用户的元数据还没有存储在数据库中,你可以从 post 请求中获取数据$_POST
,例如:
$_POST['billing_first_name'];
也许您可以在 woocommerce_created_customer
挂钩中挂钩电子邮件的发送,check this answer。