首页 >后端开发 >php教程 >如何使用条件逻辑自动完成付费 WooCommerce 订单?

如何使用条件逻辑自动完成付费 WooCommerce 订单?

Susan Sarandon
Susan Sarandon原创
2024-12-27 10:57:08968浏览

How Can I Automatically Complete Paid WooCommerce Orders with Conditional Logic?

WooCommerce 中付款订单自动完成的条件代码

WooCommerce 通常会自动完成虚拟产品的订单,但由于付款方式的原因可能不会发生这种情况限制。以下是如何实现条件代码来处理此问题:

识别过滤器挂钩:

修改允许的付款订单状态的过滤器挂钩是woocommerce_ payment_complete_order_status。所有需要在结帐时付款的付款方式都使用此挂钩。

WooCommerce 3 及更高版本的解决方案(2019):

add_filter( 'woocommerce_payment_complete_order_status', 'wc_auto_complete_paid_order', 10, 3 );
function wc_auto_complete_paid_order( $status, $order_id, $order ) {
    return 'completed';
}
  • 此代码将允许的已付款订单状态更改为仅包括“已完成”。

WooCommerce 3 及更高版本的改进版本(2018):

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

    if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque' ) ) ) {
        return;
    }

    $order->update_status( 'completed' );
}
  • 此代码仅将状态更新为“对于除“bacs”、“cod”之外的付款方式,“已完成”

所有 WooCommerce 版本的原始答案:

add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1 );
function custom_woocommerce_auto_complete_paid_order( $order_id ) {
    $order = wc_get_order( $order_id );

    if ( ( 'bacs' == get_post_meta($order_id, '_payment_method', true) ) || ( 'cod' == get_post_meta($order_id, '_payment_method', true) ) || ( 'cheque' == get_post_meta($order_id, '_payment_method', true) ) ) {
        return;
    } elseif( $order->get_status()  === 'processing' ) {
        $order->update_status( 'completed' );
    }
}
  • 此代码使用 get_post_meta() 来检查“bacs” 、“cod”和“cheque”付款方式并跳过这些订单。

以上是如何使用条件逻辑自动完成付费 WooCommerce 订单?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn