1

我正在使用WooCommerce 产品供应商插件进行供应商管理。

目前,当收到新订单时,通知会发送给客户和管理员。一旦管理员将订单状态更改为处理中或已完成,则电子邮件将发送给供应商。

但是我需要在收到订单时发送通知电子邮件。

这可以通过在中创建过滤器functions.php或通过在收到订单时触发产品状态更改通知来实现吗?

4

1 回答 1

2

更新:添加了“新预订”电子邮件通知 ID...</p>

有很多方法可以实现这一目标。在这里,我有 2 个:

1)。第一个,基于电子邮件 ID“新订单”。它经过测试并且可以工作:

add_action ('woocommerce_email_customer_details', 'new_order_email_to_vendor', 20, 4 );
function new_order_email_to_vendor( $order, $sent_to_admin, $plain_text, $email ){
    if( in_array( $email->id, ['new_order', 'new_booking'] ) ){ 
        $mailer['WC_Product_Vendors_Order_Email_To_Vendor']->trigger( $order );
    }
}

代码在您的活动子主题(或主题)的 function.php 文件中或任何插件文件中。


2)。这是未经测试的,因为它基于订单状态更改条件。您可以在 if 语句中设置“from”订单状态或某些“to”订单状态或两者兼而有之……</p>

在这里,我仅使用“来自”“待处理”订单状态,因为在 Woocommerce 的付款过程中,所有订单始终设置为待处理状态:

add_action( 'woocommerce_order_status_changed', 'new_order_email_to_vendor', 10, 4 );
function new_order_email_to_vendor( $order_id, $old_status, $new_status, $order ){

    if ( in_array( $new_status, array( 'processing','completed') ) { // <== Updated
        $emails = WC()->mailer()->get_emails();
        $emails['WC_Product_Vendors_Order_Email_To_Vendor']->trigger( $order );
    }
}

代码在您的活动子主题(或主题)的 function.php 文件中或任何插件文件中。

于 2017-11-29T10:12:54.927 回答