根据批准状态和特定订单项目更改 WooCommerce 订单状态

当当前状态为“已批准”且订单包含特定产品(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' );

            }


        }


    }

}


临摹微笑
浏览 96回答 1
1回答

慕标5832272

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 );
打开App,查看更多内容
随时随地看视频慕课网APP