Woocommerce - 如何根据支付类型发送自定义电子邮件

Woocommerce - How to send custom emails based on payment type

问题来了。我的 woocommerce 网站有 3 种不同的付款方式 -

如果我的买家使用 "Check Payment" 结账,我想给他发送一封自动发送的电子邮件,其中概述了支票付款的步骤。 如果他使用 "Western Union" 结帐,我想通过自动电子邮件将我的西联汇款信息通过电子邮件发送给他。 对于货到付款,应发送另一封自动发送的电子邮件。

通常在 Woocommerce 中,所有已完成的订单都会通过一封电子邮件发送给客户,在我的例子中,我需要 3 封不同的电子邮件,具体取决于付款选项。

所以我开始使用本教程制作自定义电子邮件 - https://www.skyverge.com/blog/how-to-add-a-custom-woocommerce-email/

上面的教程用于制作自定义电子邮件以加快运输速度。这是教程中使用的相同代码行 -

// bail if shipping method is not expedited
if ( ! in_array( $this->object->get_shipping_method(), array( 'Three Day Shipping', 'Next Day Shipping' ) ) )
    return;

如果我想查看支付方式是什么,代码行是什么? 我想检查付款方式是否为 "Check Payment",以便我可以向他发送自定义电子邮件。

如果您有任何想法,请告诉我。

1) 首先,你应该在 wordpress.stackexchange.com

问 WP 问题

2) 一般来说,更简单的方法是发送一封电子邮件,其中列出了所有选项(分为段落,甚至链接),如下所示:

Hello....
.....
.....
===== Payment Methods =======
1) Western union - follow this instruction: http://example.com/how-to-1
2) Paid by check - follow this instruction: http://example.com/how-to-2
3) Cash on Delivery - follow this instruction: http://example.com/how-to-3
.....
.....

3) 如果你知道的多一点,那么这里列出了所有的钩子 - https://docs.woocommerce.com/wc-apidocs/hook-docs.html(搜索单词 EMAIL)然后自定义所需的钩子。

您可以使用 thank_you 挂钩使用此自定义函数为每种付款方式发送不同的自定义电子邮件。有很多选项可以设置,这个参考wp_mail() function code reference.

代码如下:

add_action( 'woocommerce_thankyou', 'wc_cheque_payment_method_email_notification', 10, 1 );
function wc_cheque_payment_method_email_notification( $order_id ) {
    if ( ! $order_id ) return;

    $order = wc_get_order( $order_id );

    $user_complete_name_and_email = $order->billing_first_name . ' ' . $order->billing_last_name . ' <' . $order->billing_email . '>';
    $to = $user_complete_name_and_email;

    // ==> Complete here with the Shop name and email <==
    $headers = 'From: Shop Name <name@email.com>' . "\r\n";

    // Sending a custom email when 'cheque' is the payment method.
    if ( get_post_meta($order->id, '_payment_method', true) == 'cod' ) {
        $subject = 'your subject';
        $message = 'your message goes in here';
    }
    // Sending a custom email when 'Cash on delivery' is the payment method.
    elseif ( get_post_meta($order->id, '_payment_method', true) == 'cheque' ) {
        $subject = 'your subject';
        $message = 'your message goes in here';
    }
    // Sending a custom email when 'Western Union' is the payment method.
    else {
        $subject = 'your subject';
        $message = 'your message goes in here';
    }
    if( $subject & $message) {
        wp_mail($to, $subject, $message, $headers );
    }
}

此代码位于您的活动子主题(或主题)的 functions.php 文件中或任何插件文件中。

这已经过测试并且有效。


— 更新— 与您的评论相关。

Getting your available payment methods slugs (temporary, just to get all slugs). This will display your available payment methods slugs on shop page or in product pages too. After usage, just remove it.

Here is that functional code:

function the_available_payment_gateways(){
    foreach(WC()->payment_gateways->get_available_payment_gateways() as $payment_gateway)
        echo '<div style="border:solid 1px #999">Method Title: "'.$payment_gateway->title .'" / Method slug: "'.$payment_gateway->id .'"</div>';
}
add_action( 'woocommerce_before_main_content', 'the_available_payment_gateways', 1 );

This code goes in function.php file of your active child theme (or theme). Remove it after usage.