So vervollständigen Sie bezahlte virtuelle Produktbestellungen in WooCommerce automatisch
Wenn eine virtuelle Produktbestellung als bezahlt markiert wird, sollte sie normalerweise automatisch auf „bezahlt“ gesetzt werden Status „abgeschlossen“. WooCommerce tut dies jedoch nicht immer. Um dieses Problem zu beheben, können Sie benutzerdefinierten Code implementieren, der auf der verwendeten WooCommerce-Zahlungsmethode basiert.
Lösung
Der folgende Codeausschnitt filtert die zulässigen bezahlten Bestellstatus und vervollständigt sie effektiv virtuelle Produktbestellungen, die per nicht ausgeschlossener Zahlung bezahlt werden Methoden.
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'; }
Erklärungen
Alternative Lösungen
add_action( 'woocommerce_thankyou', 'wc_auto_complete_paid_order', 20, 1 ); function wc_auto_complete_paid_order( $order_id ) { $order = wc_get_order( $order_id ); if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque', '' ) ) ) { return; } $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 ) { $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' ); } }
Hinweis: Platzieren Sie die Codeausschnitte in der Datei „functions.php“ Ihres aktiven untergeordneten Themes oder Themes.
Das obige ist der detaillierte Inhalt vonWie kann der Abschluss bezahlter virtueller Produktbestellungen in WooCommerce automatisiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!