【问题标题】:Woocommerce - How to send custom emails based on payment typeWoocommerce - 如何根据付款类型发送自定义电子邮件
【发布时间】:2016-10-06 06:58:13
【问题描述】:

这就是问题所在。我的 woocommerce 网站有 3 种不同的付款方式 -

  • 支票付款
  • 西联汇款
  • 货到付款

如果我的买家使用“支票付款”结账,我想向他发送一封自动发送的电子邮件,其中概述了支票付款的步骤。 如果他使用“西联汇款”结账,我想将我的西联汇款信息作为自动电子邮件通过电子邮件发送给他。 应为货到付款发送另一封自动电子邮件。

通常在 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;

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

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

【问题讨论】:

    标签: php wordpress woocommerce hook-woocommerce payment-method


    【解决方案1】:

    您可以使用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 文件中或任何插件文件中。

    这是经过测试的,它可以工作。


    — 更新— 与您的 cmets 相关。

    获取您可用的付款方式 slugs (临时,只是为了获取所有 slugs)。这也会在商店页面或产品页面上显示您可用的付款方式。使用后,只需将其移除即可。

    这是功能代码:

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

    此代码位于您的活动子主题(或主题)的 function.php 文件中。使用后将其删除。

    【讨论】:

    • 嗨 Loic,感谢您的代码。我即将对其进行测试,然后我将接受答案。一个问题,我有超过 3 个支付网关,所以我不能在西联汇款中使用“其他”。你知道我怎样才能找到西联汇款的 get_post_meta (如“cod”或“cheque”)吗?
    • @Adam 更新了我的答案,该功能将在商店页面和产品页面上显示所有可用的付款方式 slug... 完成后,请在此处对这些 slug 发表评论,我会更新我的代码。
    • 我只会在 2 天内测试此代码,但我会标记答案,因为它看起来是正确的。但非常感谢 Loic。如果我有任何疑问,我会发表评论,但再次感谢。
    • 嘿 Loic,我刚刚在 functions.php 中尝试了您的代码,它给了我一个错误 500。知道为什么吗?我还在努力解决它。
    • 好的,只是因为最后一个函数中缺少大括号。我编辑了它,它现在可以工作了:)
    【解决方案2】:

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

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

    你好....
    .....
    .....
    ===== 付款方式 =======
    1) 西联汇款 - 遵循此说明:http://example.com/how-to-1
    2) 支票支付 - 遵循 此说明:http://example.com/how-to-2
    3) 货到付款 - 请按照以下说明操作:http://example.com/how-to-3
    .....
    .....

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

    【讨论】:

    • 很抱歉地通知您,关于 WooCommerce 的所有相关问题在 wordpress stackexchange 中都是题外话。所以请更新你的答案。谢谢
    • @tazo 由于多种原因,我无法发送列出所有选项的电子邮件。我必须为三种不同的付款方式发送单独的电子邮件。
    猜你喜欢
    • 2019-01-22
    • 2022-01-22
    • 1970-01-01
    • 2018-04-23
    • 2017-12-06
    • 2014-11-10
    • 2013-07-30
    • 2012-04-22
    • 1970-01-01
    相关资源
    最近更新 更多