如何为付费 WooCommerce 订单实施条件自动完成
在 WooCommerce 中,虚拟产品经常遇到自动订单完成问题。本综合指南提供了多种解决方案来解决此问题,包括自定义代码片段和插件选项。如需更精细的方法,请考虑基于 WooCommerce 付款方式实现条件代码。
自动完成付款订单的条件代码
根据付款方式有选择地应用自动完成功能,利用 woocommerce_ payment_complete_order_status 过滤器挂钩,该挂钩在结账时需要付款时触发。这是与 WooCommerce 3 及更高版本兼容的改进版本:
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'; }
此代码将除“银行电汇”(bacs)、“货到付款”之外的所有支付网关的允许付款订单状态更改为“已完成” (鳕鱼)和“支票”(支票)。
其他注意事项
替代方案
改进版本(2018)
add_action( 'woocommerce_thankyou', 'wc_auto_complete_paid_order', 20, 1 ); function wc_auto_complete_paid_order( $order_id ) { // No updates for Bank wire, Cash on delivery, and Cheque if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque', '' ) ) ) { return; } // Autocomplete all others else { $order->update_status( 'completed' ); } }
原始答案(所有 WooCommerce版本)
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1 ); function custom_woocommerce_auto_complete_paid_order( $order_id ) { // No updates for Bank wire, Cash on delivery, and Cheque 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; } // Autocomplete all others else { $order->update_status( 'completed' ); } }
注意:请务必将代码片段放在子主题的functions.php 文件中。
以上是如何根据付款方式自动完成WooCommerce付费订单?的详细内容。更多信息请关注PHP中文网其他相关文章!