首頁 > 後端開發 > php教程 > 如何針對特定付款方式自動完成 WooCommerce 訂單?

如何針對特定付款方式自動完成 WooCommerce 訂單?

Mary-Kate Olsen
發布: 2024-12-17 20:53:11
原創
939 人瀏覽過

How to Automate WooCommerce Order Completion for Specific Payment Methods?

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

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