通过自定义支付插件发送处理订单电子邮件

时间:2017-07-19 作者:Nemanja Đatkov

完成订单后,所有付款方式都会向管理员和客户发送电子邮件。我有通过银行插件定制的付款方式,即成功返回空购物车、列表中的新订单和其他一切都正常,但它不发送电子邮件。因为插件中不存在邮件功能。成功付款后,我需要从处理订单模板发送与其他付款方式完全相同的电子邮件。我知道何时触发函数,但不知道调用什么函数。

<?php
class My_Class extends WC_Payment_Gateway {

...

function __construct() {

    ...

    if ( is_admin() ) {
        add_action( \'woocommerce_update_options_payment_gateways_\' . $this->id, array( $this, \'process_admin_options\' ) );
    }

    if( isset($_POST[\'oid\']) && isset($_POST[\'Response\']) )
        $this->process_respond($_POST[\'oid\'], $_POST[\'Response\']);
}

public function process_respond($response_order_id, $result){
    global $woocommerce;

    $customer_order = new WC_Order( $response_order_id );

    $error_msg = "Error in transaction";

    if ( $result == "Approved" ) {
        My_Class::extend($customer_order);

        ...

        // I need to trigger function here
        wp_mail(...)

        die();

    } else {

        ...

    }
}
}

1 个回复
SO网友:Akshay Shah

通过使用他的mail类,您可以很容易地做到这一点。您也可以扩展该类。下面是应该与类代码一起使用的代码。如果它不起作用,那么您需要像为自定义支付网关所做的那样扩展woocommerce电子邮件类。

 $mailer = WC()->mailer();
        $mails = $mailer->get_emails();
        if ( ! empty( $mails ) ) {                
            foreach ( $mails as $mail ) {
                if ( $mail->id == \'new_order\' || $mail->id == \'customer_processing_order\' ){
                    $mail->trigger( $order->id );                    
                }                 
            }            
        }

结束

相关推荐

WordPress Plugins won't save

我有一个WordPress网站,我刚刚接管了一个客户,因此我没有能力与以前的网站管理员/开发人员交谈。该网站使用的是YOOtheme对Subway稍加修改的版本。为了更新插件位置,Subway的一部分有“小部件选项”。我无法更改外观或小部件显示的页面,因为我无法保存任何内容。它看起来像已保存,但没有保存,或者您会在保存按钮旁边看到“加载循环”,它一直在运行。Things to note:<WordPress和插件是最新的。在我们转移到新服务器之前,插件是可更新的。新服务器有一个max\\u inpu