簡體   English   中英

根據已批准狀態和特定訂單項目更改 WooCommerce 訂單狀態

[英]Change WooCommerce order status based on approved status and specific order item

當當前狀態為“已批准”且訂單包含特定產品(id = 10)時,我嘗試將 WooCommerce 訂單狀態更改為“處理中”。

我嘗試了下面的代碼,但它不起作用。 我對 php 很陌生,希望得到任何指導!

add_action('woocommerce_order_status_changed', 'ts_auto_complete_business_cards');

function ts_auto_complete_business_cards($order_id)
{

    if ( ! $order_id ) {
        return;
    }

    global $product;
    $order = wc_get_order( $order_id );

    if ($order->data['status'] == 'approved') {
        $items=$order->get_items();
        foreach ( $items as $item ) {
            $product_id = $item->get_product_id();
            if ($product_id!="10")
            {
                $order->update_status( 'completed' );
            }

        }

    }
}
  • woocommerce_order_status_changed有 4 個參數
  • 這行 -> if ($product_id!="10")說不等於,你也比較字符串而不是數值

試試這個方法

function action_woocommerce_order_status_changed( $order_id, $old_status, $new_status, $order ) {

    // Compare
    if( $old_status === 'approved' ) {
        // Get items
        $items = $order->get_items();

        foreach ( $items as $item ) {
            // Get product id
            $product_id = $item->get_product_id();

            if ($product_id == 10 ) {
                $order->update_status( 'processing' );
                break;
            }
        }
    }
}
add_action( 'woocommerce_order_status_changed', 'action_woocommerce_order_status_changed', 10, 4 );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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