Heim >Backend-Entwicklung >PHP-Tutorial >Wie automatisiere ich den WooCommerce-Auftragsabschluss für bestimmte Zahlungsmethoden?

Wie automatisiere ich den WooCommerce-Auftragsabschluss für bestimmte Zahlungsmethoden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-17 20:53:11941Durchsuche

How to Automate WooCommerce Order Completion for Specific Payment Methods?

Automatische Vervollständigung bezahlter Bestellungen in WooCommerce für bestimmte Zahlungsmethoden

WooCommerce vervollständigt Bestellungen für virtuelle Produkte im Allgemeinen automatisch. Bestimmte Zahlungsmethoden wie „Banküberweisung“, „Nachnahme“ und „Scheck“ erfordern jedoch einen bedingten Ansatz.

woocommerce_ payment_complete_order_status Filter Hook

Die optimale Lösung für dieses Problem besteht darin, den Filter-Hook woocommerce_paid_complete_order_status zu nutzen, der von allen Zahlungsmethoden verwendet wird, wenn eine Zahlung erforderlich ist Kasse.

Bedingter Code mit dem Filter-Hook

Der folgende Code nutzt den Filter-Hook und wendet die Statusänderung basierend auf der Zahlungsmethode bedingt an:

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;
}

Durch die Verwendung dieses Filter-Hooks können Sie den Status bezahlter Bestellungen basierend auf Zahlungsmethoden effektiv und genau aktualisieren, ohne mehrere Benachrichtigungen auszulösen Kunden.

Alternativen

Code-Snippet:

Wenn die Zahlungsmethoden, die Sie ansprechen möchten, auf diejenigen beschränkt sind, die dies tun Wenn Sie standardmäßig keine automatische Vervollständigung auslösen („Banküberweisung“, „Nachnahme“ und „Scheck“), können Sie Folgendes verwenden Code:

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');
    }
}

Plugin:

Das Plugin „WooCommerce Autocomplete Orders“ kann auch eine Lösung für bestimmte Zahlungsmethoden bieten. Allerdings funktioniert es möglicherweise nicht mit bestimmten Kreditkarten-Gateways.

Das obige ist der detaillierte Inhalt vonWie automatisiere ich den WooCommerce-Auftragsabschluss für bestimmte Zahlungsmethoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn