簡體   English   中英

"為具有自定義狀態的訂單禁用 WooCommerce 訂單電子郵件通知"

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM