在 WooCommerce 中以处理状态顺序发送额外的电子邮件 (functions.php)

Send additional email in WooCommerce in a processing status order (functions.php)

我需要在结帐后发送这两封电子邮件。

1.- Woocommerce 自动电子邮件(汇总订单、王子、总价等)。

2.- 包含附加信息的电子邮件。

我一直在寻找,但我无法通过 WooCommerce 插件实现,我也无法使用其他插件(如 Shopmagic),所以......必须使用代码。

找了很多时间,我觉得可能是这样的。

(状态控制的顺序是processing没有completed因为我在Stripe和Stripe中用测试模式测试,在测试模式下,订单被定义为“处理中”状态, 不是 completed.

从现在开始我的 functions.php 文件是这样的:

$order = new WC_Order( $order_id );

function order_processing( $order_id ) {
    $order = new WC_Order( $order_id );
    $to_email = $order["billing_address"];
    $headers = 'From: Your Name <alexiglesiasvortex@gmail.com>' . "\r\n";
    wp_mail($to_email, 'subject', '<h1>This is a test for my new pending email.</h1><p>Agree, this is a test</p>', $headers );
}

add_action( 'woocommerce_payment_processing', 'order_processing' );

目前,这不起作用...我没有收到任何错误并且结帐正确结束,但没有新电子邮件到达我的收件箱。

我需要一些帮助,伙计们,有人可以帮助我吗?非常感谢,祝你周一愉快!

我在 WooCommerce 文档中找不到任何 woocommerce_payment_processing 挂钩。请尝试 woocommerce_order_status_changed

此外,您访问的帐单电子邮件地址不正确。 $order 是一个对象,您无法像获取数组一样获取帐单电子邮件。可以使用WC_Orderclass.

get_billing_email方法
// send a custom email when the order status changes to "processing"
add_action( 'woocommerce_order_status_changed', 'send_custom_email_order_processing', 10, 4 );
function send_custom_email_order_processing( $order_id, $from_status, $to_status, $order ) {

    // only if the new order status is "processing"
    if ( $to_status == 'processing' ) {
        $to_email = $order->get_billing_email();
        $headers = 'From: Your Name <alexiglesiasvortex@gmail.com>' . "\r\n";
        wp_mail( $to_email, 'subject', '<h1>This is a test for my new pending email.</h1><p>Agree, this is a test</p>', $headers );
    }

}

代码已经过测试并且可以工作。将它添加到您的活动主题 functions.php.