为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
临摹微笑 2023-04-21 10:48:57
当当前状态为“已批准”且订单包含特定产品(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' );            }        }    }}
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

  • 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 );



查看完整回答
反对 回复 2023-04-21
  • 1 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信