如何為付費 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' ); } }
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中文網其他相關文章!