php - 订购特定产品后发送带有用户凭据的自定义 WooCommerce 邮件
问题描述
我正在尝试在订购某些产品后发送带有用户凭据的自定义 WooCommerce 邮件。进一步解释:有人购买产品
- 我必须检查订单是否包含某个产品 ID
- 我必须检查客户是否已经注册为用户,如果没有,它应该创建一个用户
- 然后它应该向客户发送带有这些凭据的自定义邮件
我正在努力使以下代码正常工作。特别是我不知道如何添加带有凭据和自定义登录链接的自定义电子邮件消息。你知道解决办法吗?
add_action( 'woocommerce_thankyou', 'check_order_product_id' );
function check_order_product_id( $order_id ){
$order = wc_get_order( $order_id );
$items = $order->get_items();
$order_email = $order->billing_email;
//create custom mail
function get_custom_email_html( $order, $heading = false, $mailer ) {
$template = 'emails/my-custom-email-i-want-to-send.php';
return wc_get_template_html( $template, array(
'order' => $order,
'email_heading' => $heading,
'sent_to_admin' => false,
'plain_text' => false,
'email' => $mailer
) );
}
// load the mailer class
$mailer = WC()->mailer();
//format the email
$recipient = $order_email;
$subject = __("Deine Login-Daten für Geomap", 'theme_name');
$content = get_custom_email_html( $order, $subject, $mailer );
$headers = "Content-Type: text/html\r\n";
//send the email through wordpress
$mailer->send( $recipient, $subject, $content, $headers );
foreach ( $items as $item_id => $item ) {
$product_id = $item->get_variation_id() ? $item->get_variation_id() : $item->get_product_id();
if ( $product_id === XYZ ) {
//get the user email from the order and check if registered already
function email_exists( $order_email ) {
$user = get_user_by( 'email', $order_email );
if ( $user ) {
return $wp_new_user_notification_email;
}
else {
// random password with 12 chars
$random_password = wp_generate_password();
// create new user with email as username & newly created pw
$user_id = wp_create_user( $order_email, $random_password, $order_email );
return $wp_new_user_notification_email;
}
}
}
}
}
解决方案
因为你提到低门槛非常重要......
我建议链接到您的感谢页面并在那里也有注册链接。您可以使用 SSO (Google/Amazon/etc.) 选项,以便用户无需直接通过 WordPress 注册。
我假设产品 ID 有某种激活码?您可以将其作为参数加密发送到注册页面,以便在他们的会话中注册。登录后,您已将他们的激活码附加到用户帐户,您就完成了。
脚步:
客户购买
如果他们有帐户:将链接发送给他们,他们就完成了。
如果他们不这样做:
一个。向他们发送一封电子邮件,其中包含带有加密激活码的链接。
湾。他们必须注册(通过 SSO 或直接通过 WordPress)。
C。注册后,您将他们的产品附加到他们的用户帐户,并将他们重定向到他们关心的页面。
推荐阅读
- mysql - 我需要帮助编写 sql 来加入 3 个表
- apache-spark - Spark将数据插入配置单元外部表,创建非常小的部分文件
- php - 删除 Mpdf v7 中的边距
- c# - 在 GetCallbackChannel 上获取 InvalidCastException
- azure - 如何使用逻辑应用以编程方式在 Azure AD 中注册应用?
- terraform - terraform state 是否为不同的配置文件保存状态?
- haskell - 我可以证明 (forall x. Coercible (ax) (bx)) 暗示 Coercible ab 吗?
- python - 通过管理员控制上传图片
- python - 只强制执行模块文档字符串?
- r - 如何在一列中查找重复项并将它们标记在新列中,具体取决于使用 R 在第三列中的日期顺序