Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich den WooCommerce-Auftragsabschluss für bestimmte Zahlungsmethoden automatisieren?
Überwindung der Einschränkungen der automatischen Auftragsvervollständigung von WooCommerce
Normalerweise automatisiert WooCommerce den Abschluss von Bestellungen für virtuelle Produkte. Für Zahlungsmethoden wie „Banküberweisung“, „Nachnahme“ und „Scheck“ ist diese Funktion jedoch möglicherweise nicht verfügbar. Um dieses Problem zu beheben und die automatische Auftragsvervollständigung basierend auf Zahlungsmethoden bedingt anzuwenden, können die folgenden Lösungen implementiert werden:
Verwendung des Filter-Hooks woocommerce_paid_complete_order_status
Dieser Filter-Hook wird ausgelöst, wenn Eine Zahlung ist beim Bezahlvorgang erforderlich und wird von allen Zahlungsmethoden verwendet. Durch Ändern der zulässigen Status bezahlter Bestellungen können Sie eine bedingte automatische Vervollständigung erreichen:
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'; }
Verwendung des Aktions-Hooks woocommerce_thankyou
Für WooCommerce-Versionen 3 und höher der folgende Code kann verwendet werden:
add_action( 'woocommerce_thankyou', 'wc_auto_complete_paid_order', 20, 1 ); function wc_auto_complete_paid_order( $order_id ) { if ( ! $order_id ) return; $order = wc_get_order( $order_id ); if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque', '' ) ) ) { return; } else { $order->update_status( 'completed' ); } }
Original Lösung
Für alle WooCommerce-Versionen kann der folgende Code verwendet werden:
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1 ); function custom_woocommerce_auto_complete_paid_order( $order_id ) { if ( ! $order_id ) return; $order = wc_get_order( $order_id ); 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; } elseif( $order->get_status() === 'processing' ) { $order->update_status( 'completed' ); } }
Diese Lösungen bieten eine bedingte automatische Auftragsvervollständigung für bezahlte Bestellungen basierend auf den angegebenen Zahlungsmethoden und sorgen so für eine effiziente und effiziente Abwicklung genaue Auftragsabwicklung in WooCommerce-Shops, die eine Vielzahl von Zahlungsoptionen akzeptieren.
Das obige ist der detaillierte Inhalt vonWie kann ich den WooCommerce-Auftragsabschluss für bestimmte Zahlungsmethoden automatisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!