在 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中文網其他相關文章!