我想将成功付款订单自动标记为“已完成”状态。我在Stack和Google上搜索了很多,并找到了这个答案代码: WooCommerce: Auto complete paid Orders (depending on Payment methods)
但问题是代码标记所有将订单置于“已完成”状态,而不依赖于订单是否成功。
我需要更改代码才能将仅付费订单自动标记为“已完成”状态?
新的增强和简化的代码版本替换(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文件中。测试和工作。
这样您就可以避免“失败”,“已取消”或“待处理”订单。