[英]Custom PHP snipper for email notification to the admin for pending order status in WooCommerce causing duplicated emails for processed orders
[英]Disable WooCommerce order email notification for orders with custom status
我已經在網上搜索並檢查了WooCommerce 文檔<\/a>,尋找一種解決方案,以禁用在客戶在 WooCoomerce 下訂單時發送給客戶的“確認電子郵件”。
我還想禁用發送給管理員的“新訂單”郵件。
但僅當訂單具有自定義狀態“mystatus”時,<\/strong>某些訂單會根據客戶訂購的內容獲得該狀態。
嘗試像這樣添加它,但它不起作用:
add_action( 'woocommerce_thankyou','woocommerce_thankyou_change_order_status', 10, 1 );
function woocommerce_thankyou_change_order_status( $order_id ){
if( ! $order_id ) return;
$order = wc_get_order( $order_id );
$user_id = $order->get_user_id();
if( ($order->get_status() == 'processing' || $order->get_status() == 'pending' || $order->get_status() == 'on-hold' ) && dokan_is_user_seller( $user_id ) && is_user_logged_in()) {
$order->update_status( 'mystatus' );
}
}
禁用
WooCommerce >> Settings >> Emails<\/code> 。
現在只需發送它以防您的訂單狀態正確:
add_action( 'woocommerce_thankyou', 'woocommerce_thankyou_change_order_status', 10, 1 );
function woocommerce_thankyou_change_order_status( $order_id ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
$user_id = $order->get_user_id();
if ( ( $order->get_status() == 'processing' || $order->get_status() == 'pending' || $order->get_status() == 'on-hold' ) && dokan_is_user_seller( $user_id ) && is_user_logged_in() ) {
$order->update_status( 'mystatus' );
$email_oc = new WC_Email_Customer_Completed_Order();
$email_oc->trigger($order_id);
}
}
無需對 WooCommerce 設置進行任何更改。
除非您有效地提供此信息,否則不會針對自定義訂單狀態發送電子郵件通知<\/strong>。
但是,會發送默認的電子郵件通知,因為
woocommerce_thankyou<\/code>掛鈎是在發送電子郵件通知之后執行的。<\/strong>
所以使用
woocommerce_thankyou<\/code>對面的
woocommerce_checkout_order_created<\/code>鈎子(即在發送電子郵件通知之前執行)來更改訂單狀態,無論如何都不會發送任何電子郵件。
function action_woocommerce_checkout_order_created( $order ) {
// Get user ID
$user_id = $order->get_user_id();
// Compare
if ( ( $order->get_status() == 'processing' || $order->get_status() == 'pending' || $order->get_status() == 'on-hold' ) && dokan_is_user_seller( $user_id ) && is_user_logged_in() ) {
// Update status
$order->update_status( 'mystatus' );
}
}
add_action( 'woocommerce_checkout_order_created', 'action_woocommerce_checkout_order_created', 10, 1 );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.