Par*_*koo 5 php wordpress orders email-notifications woocommerce
我使用此代码进行新订单并设置完整状态。
之后,woocommerce 会自动向买家发送电子邮件。
但我不想发送这封电子邮件。
我怎么能?
$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);
Run Code Online (Sandbox Code Playgroud)
注意:我不想禁用从 wp-admin 发送电子邮件
请注意,该函数get_product()已过时并被替代wc_get_product()。
为了避免通知客户,您可以0先将用户ID设置为,然后将订单状态更新为“完成”后,您可以设置用户地址和真实用户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' );
Run Code Online (Sandbox Code Playgroud)
经过测试并有效。
唯一的是,您将收到两次发送给管理员的“新订单”通知(第二封电子邮件将设置正确的客户地址详细信息)。
有关的: