Heim >Backend-Entwicklung >PHP-Tutorial >Wie automatisiere ich den WooCommerce-Auftragsabschluss für bestimmte Zahlungsmethoden?
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!