php - 在 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' );
}
}
解决方案
你可以尝试这样的事情:
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' );
}
}
代码未经测试,我只是把它写下来。
让我知道它是否有帮助;)
干杯,弗朗切斯科
推荐阅读
- ios - 如何使用 SwiftUI 处理屏幕触摸事件?
- autodesk-forge - Forge Autodesk Recap API 可以将点云数据转换为表面数据吗?
- vue.js - vue mixin 在实例和组件之间共享
- javascript - Websocekt 连接在 Internet Explorer 11 中不起作用
- python - 在 boost::python::import("cv2") 上得到异常 boost::python::error_already_set
- react-native - 为什么 API 密钥身份验证在使用 Crypto-JS 的 Coinbase Pro 上不起作用?
- android - 使用改造显示 responsejavax.net.ssl.SSLHandshakeException 错误android
- c# - 当我为目录设置LastWriteTime 时,会发生异常,因为“文档正在由另一个进程处理”
- python - 如何使用 setText 设置和获取“评论”文本?
- python - 从 csv 文件中删除字母和符号 - python 3.7