问题描述
我将此代码用于新订单并设置完成状态。
但我不想发送这封电子邮件。
我该怎么做?
$order = wc_create_order();
$order->set_customer_id($userId);
foreach($_POST['basket'] as $prod){
$order->add_product(get_product($prod['id']),$prod['count']);
}
$order->set_address($address,'billing');
$order->calculate_totals();
$order->update_status("completed",'TEST',TRUE);
注意:我不想禁用从 wp-admin 发送电子邮件
解决方法
请注意,函数 get_product()
已过时并替换为 wc_get_product()
。
为避免通知客户,您可以先将用户ID设置为0
,然后将订单状态更新为“完成”后,您可以设置用户地址和真实用户ID如下:
$order = wc_create_order();
$order->set_customer_id(0);
foreach($_POST['basket'] as $prod){
$order->add_product( wc_get_product($prod['id']),$prod['count']);
}
$order->calculate_totals();
$order->update_status("completed",'TEST',TRUE);
$order->set_address($address,'billing'); // set address
$order->set_customer_id($userId); // Set user ID
$order_id = $order->save(); // Save to database (get order ID)
// Allow resending new order email
add_filter('woocommerce_new_order_email_allows_resend','__return_true' );
// Resend new order email
WC()->mailer()->get_emails()['WC_Email_New_Order']->trigger( $order_id );
// Disable resending new order email
add_filter('woocommerce_new_order_email_allows_resend','__return_false' );
经过测试并有效。
唯一的事情是您将收到 2 次发送给管理员的“新订单”通知(第二封电子邮件将设置正确的客户地址详细信息)。
相关: