首页 > 解决方案 > 订购特定产品后发送带有用户凭据的自定义 WooCommerce 邮件

问题描述

我正在尝试在订购某些产品后发送带有用户凭据的自定义 WooCommerce 邮件。进一步解释:有人购买产品

  1. 我必须检查订单是否包含某个产品 ID
  2. 我必须检查客户是否已经注册为用户,如果没有,它应该创建一个用户
  3. 然后它应该向客户发送带有这些凭据的自定义邮件

我正在努力使以下代码正常工作。特别是我不知道如何添加带有凭据和自定义登录链接的自定义电子邮件消息。你知道解决办法吗?

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;
              }
            }
       }
    }
}

标签: phpwordpressemailwoocommerce

解决方案


因为你提到低门槛非常重要......

我建议链接到您的感谢页面并在那里也有注册链接。您可以使用 SSO (Google/Amazon/etc.) 选项,以便用户无需直接通过 WordPress 注册。

我假设产品 ID 有某种激活码?您可以将其作为参数加密发送到注册页面,以便在他们的会话中注册。登录后,您已将他们的激活码附加到用户帐户,您就完成了。

脚步:

  1. 客户购买

  2. 如果他们有帐户:将链接发送给他们,他们就完成了。

  3. 如果他们不这样做:

    一个。向他们发送一封电子邮件,其中包含带有加密激活码的链接。

    湾。他们必须注册(通过 SSO 或直接通过 WordPress)。

    C。注册后,您将他们的产品附加到他们的用户帐户,并将他们重定向到他们关心的页面。


推荐阅读