首頁 > 後端開發 > php教程 > 如何根據付款方式自動完成WooCommerce付費訂單?

如何根據付款方式自動完成WooCommerce付費訂單?

Mary-Kate Olsen
發布: 2024-12-11 09:18:18
原創
618 人瀏覽過

How to Automatically Complete Paid WooCommerce Orders Based on Payment Method?

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板