根据总金额自动完成WooCommerce订单

时间:2019-09-30 20:12:50

标签: php wordpress woocommerce hook-woocommerce orders

我希望禁用自动完成订单,但仅对那些金额高于30欧元的订单禁用。所有产品都是虚拟的。

我在网上发现了此功能:

add_action( 'woocommerce_thankyou', 'stop_auto_complete_order' );
function stop_auto_complete_order( $order_id ) { 
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );
    $order->update_status( 'processing' );
}

但是,我不知道只有在订单金额高于特定金额的情况下才可以制作。

1 个答案:

答案 0 :(得分:1)

您需要使用一些WC_Order methods,例如:

  • 总订单金额:get_total()
  • 订单状态:get_status()

根据您的代码,以下内容将:

  • 最多30个自动完成的已付款订单(将设置为“已完成”状态)
  • 自动处理大于30的已付款订单(将设置为“处理中”状态)

代码:

add_action( 'woocommerce_thankyou', 'stop_auto_complete_order' );
function stop_auto_complete_order( $order_id ) { 
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );

    // Auto-complete paid orders up to 30 (for "on-hold" and "processing" order statuses)
    if ( $order->get_total() <= 30 && in_array( $order->get_status(), [ 'on-hold', 'processing' ] ) ) {
        $order->update_status( 'completed' );
    } 
    // Other paid orders are set to "processing" status
    elseif( $order->get_status() === 'on-hold' ) {
        $order->update_status( 'processing' );
    }
}

代码进入活动子主题(或活动主题)的functions.php文件中。经过测试,可以正常工作。