首页 > 解决方案 > 在 WooCommerce 3+ 中将已付款订单标记为“已完成”,未付款为“已取消”

问题描述

我的 WooCommerce 功能有一个小问题,应该以我想要的方式工作,但似乎有错误。我想将成功支付的订单标记为“已完成”,而不是在下达后停留在“处理中”,未成功支付的订单标记为“已取消”,而不是停留在“付款待处理”。这是我的错误功能:

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 ( $order->has_status('processing') ) {
        $order->update_status( 'completed' );
    }
}

标签: phpwordpressfunctionwoocommerce

解决方案


你可以尝试这样的事情:

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

  if ( ! $order_id ) {
    return;
  }

  $order = wc_get_order( $order_id );

  if( $order->has_status('processing') ) {
    $order->update_status( 'completed' );
  } else {
    $order->update_status( 'cancelled' );
  }

}

代码未经测试,我只是把它写下来。

让我知道它是否有帮助;)

干杯,弗朗切斯科


推荐阅读