在 WooCommerce 中自动完成特定付款方式的已付款订单
WooCommerce 通常会自动完成虚拟产品的订单。但是,某些付款方式,例如“银行电汇”、“货到付款”和“支票”,需要有条件的方法。
woocommerce_ payment_complete_order_status 过滤器挂钩
此问题的最佳解决方案是利用 woocommerce_ payment_complete_order_status 过滤器挂钩,付款时所有付款方式都会使用该挂钩。结帐时需要。
使用过滤器挂钩的条件代码
以下代码利用过滤器挂钩并根据付款方式有条件地应用状态更改:
add_filter('woocommerce_payment_complete_order_status', 'wc_auto_complete_paid_order', 10, 3); function wc_auto_complete_paid_order($status, $order_id, $order) { // Check if the payment method is not "Bank wire," "Cash on delivery," or "Cheque." if (!in_array($order->get_payment_method(), array('bacs', 'cod', 'cheque'))) { // If not, change the order status to "completed." return 'completed'; } // Otherwise, do not modify the order status. return $status; }
通过使用此过滤钩子,您可以根据付款方式有效、准确地更新已付款订单的状态,而无需触发多个通知客户。
替代方案
代码片段:
如果您要定位的付款方式仅限于那些默认情况下不触发自动完成(“银行电汇”、“货到付款”和“支票”),您可以使用以下代码:
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); // Check if the payment method is not "Bank wire," "Cash on delivery," or "Cheque." if (!in_array($order->get_payment_method(), array('bacs', 'cod', 'cheque'))) { // If not, update the order status to "completed." $order->update_status('completed'); } }
插件:
“WooCommerce 自动完成订单”插件还可以为特定付款方式提供解决方案。但是,它可能不适用于某些信用卡网关。
以上是如何针对特定付款方式自动完成 WooCommerce 订单?的详细内容。更多信息请关注PHP中文网其他相关文章!