仅限自动标记在WooCommerce 3+中付费订单为“已完成”状态

问题描述 投票:0回答:1

我想将成功付款订单自动标记为“已完成”状态。我在Stack和Google上搜索了很多,并找到了这个答案代码: WooCommerce: Auto complete paid Orders (depending on Payment methods)

但问题是代码标记所有将订单置于“已完成”状态,而不依赖于订单是否成功。

我需要更改代码才能将仅付费订单自动标记为“已完成”状态?

php wordpress woocommerce orders payment-method
1个回答
3
投票

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

见:WooCommerce: Auto complete paid orders


原始答案:

对于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文件中。测试和工作。

这样您就可以避免“失败”,“已取消”或“待处理”订单。

© www.soinside.com 2019 - 2024. All rights reserved.