将WooCommerce新订单管理员从电子邮件地址更改为客户的电子邮件地址

时间:2019-05-14 11:33:10

标签: wordpress woocommerce

我需要WooCommerce从客户的电子邮件地址(而不是管理员电子邮件地址)发送特定的电子邮件。

背景

我正在建立一项付费支持服务,该服务使用WooCommerce进行支付并将bbPress用作票务系统。

用户通过WooCommerce订购服务产品,并创建了新的WooCommerce订单。然后,该订单需要填充票务系统,而我的解决方法是将“新订单”电子邮件发送到电子邮件收件箱,然后由票务系统提取。显然,这并不完美,并且会引入故障点,但目前还可以。

问题是新订单电子邮件是从WooCommerce管理员电子邮件地址发送的,因此新票证与该帐户关联,而不是与创建订单的用户的帐户关联。

因此,我需要来自地址的电子邮件作为提交订单的用户的地址。

用钩子可以吗?

woocommerce/includes/class-wc-emails.php中,我们有以下内容:

public function send( $to, $subject, $message, $headers = "Content-Type: text/html\r\n", $attachments = '' ) {
    // Send.
    $email = new WC_Email();
    return $email->send( $to, $subject, $message, $headers, $attachments );
}

这不包括发件人,并且因为它被埋在一个类中,所以仍然可以覆盖它吗?

非常适合任何指针。

(PS我确实很欣赏这种方法的问题,包括将电子邮件标记为垃圾邮件,但是最初,在我建立一个更强大的系统之前,这将是可管理的)

(我知道PPS存在一个几乎相同的问题,但是链接不起作用,并且与非常过时的WooCommerce相关)

1 个答案:

答案 0 :(得分:1)

从您的客户电子邮件地址发送电子邮件是不可能的。您只能在WP_Mail标头中将客户电子邮件设置为Reply-To。 以我的经验,您应该向另一封电子邮件收件箱中发送另一封电子邮件,并且默认情况下跳过WooCommerce发送的电子邮件。使用此钩子:

add_action('woocommerce_order_status_pending_to_processing', 'order_created_send_email');

function order_created_send_email($order_id, $order) {
    $customer_email = $order->get_billing_email();
    /* Code to send email with Reply-To: customer email */
}