首页 文章

在Woocommerce中取消订单时向客户发送电子邮件

提问于
浏览
3

我正在尝试在订单取消时向客户发送电子邮件 . 默认情况下,woocommerce仅将此电子邮件仅发送给网站的管理员 . 此代码解决了网络上相关帖子的问题:

function wc_cancelled_order_add_customer_email( $recipient, $order ){
   return $recipient . ',' . $order->billing_email;
}
add_filter( 'woocommerce_email_recipient_cancelled_order', 'wc_cancelled_order_add_customer_email', 10, 2 );
add_filter( 'woocommerce_email_recipient_failed_order', 'wc_cancelled_order_add_customer_email', 10, 2 );

然而,似乎woocommerce完全删除了那些过滤器钩子 . 有没有办法做到这一点?

提前致谢!

1 回答

  • 7

    在这个挂钩 woocommerce_order_status_changed 动作钩子的自定义函数中,我的目标是"cancelled"和"failed"订单向客户发送相应的电子邮件通知(管理员将通过WooCommerce自动通知接收它):

    add_action('woocommerce_order_status_changed', 'send_custom_email_notifications', 10, 4 );
    function send_custom_email_notifications( $order_id, $old_status, $new_status, $order ){
        if ( $new_status == 'cancelled' || $new_status == 'failed' ){
            $wc_emails = WC()->mailer()->get_emails(); // Get all WC_emails objects instances
            $customer_email = $order->get_billing_email(); // The customer email
        }
    
        if ( $new_status == 'cancelled' ) {
            // change the recipient of this instance
            $wc_emails['WC_Email_Cancelled_Order']->recipient = $customer_email;
            // Sending the email from this instance
            $wc_emails['WC_Email_Cancelled_Order']->trigger( $order_id );
        } 
        elseif ( $new_status == 'failed' ) {
            // change the recipient of this instance
            $wc_emails['WC_Email_Failed_Order']->recipient = $customer_email;
            // Sending the email from this instance
            $wc_emails['WC_Email_Failed_Order']->trigger( $order_id );
        } 
    }
    

    代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中 .

    这应该适用于WooCommerce 3

    如果您需要,而不是更改电子邮件,则可以将其添加到现有收件人://在此实例中添加收件人
    $ wc_emails ['WC_Email_Failed_Order'] - >收件人 . =',' . $ CUSTOMER_EMAIL;


    相关回答:Send an email notification when order status change from pending to cancelled

相关问题