1

我想将刚刚成功支付的订单自动标记为“已完成”状态。我在 Stack 和 Google 上搜索了很多,找到了这个答案代码:
WooCommerce:自动完成支付订单(取决于付款方式)

但问题是代码将所有已下订单标记为“已完成”状态,而不取决于订单是否成功下达。

我需要在代码中更改什么以将仅已付款订单自动标记为“已完成”状态?

4

1 回答 1

3

新的增强和简化代码版本 替换(2019 年 3 月):

请参阅:WooCommerce:自动完成已付款订单


原答案:

对于 Paypal 和其他第三方网关,要定位的“已付款”订单状态是“处理中” (和“已完成”),因此您可以将代码轻松更改为:

add_action( 'woocommerce_thankyou', 'wc_auto_complete_paid_order', 20, 1 );
function wc_auto_complete_paid_order( $order_id ) {

    if ( ! $order_id )
        return;

    // Get an instance of the WC_Product object
    $order = wc_get_order( $order_id );

    // No updated status for orders delivered with Bank wire, Cash on delivery and Cheque payment methods.
    if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque', '' ) ) ) {
        return;
    // Updated status to "completed" for paid Orders with all others payment methods
    } elseif ( in_array( $order->get_status(), array('on-hold', 'processing') ) ) {
        $order->update_status( 'completed' );
    }
}

代码位于活动子主题(或活动主题)的 function.php 文件中。测试和工作。

这样您将避免“失败”、“取消”或“待处理”订单。

于 2018-12-16T13:54:52.953 回答