Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann der Abschluss bezahlter virtueller Produktbestellungen in WooCommerce automatisiert werden?

Wie kann der Abschluss bezahlter virtueller Produktbestellungen in WooCommerce automatisiert werden?

Susan Sarandon
Freigeben: 2024-12-09 18:25:11
Original
546 Leute haben es durchsucht

How to Automate the Completion of Paid Virtual Product Orders in WooCommerce?

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';
}
Nach dem Login kopieren

Erklärungen

  • Leicht und effektiv: Dieser Filter wird nur ausgelöst, wenn eine Online-Zahlung erforderlich ist, wodurch vermieden wird unnötige Bedingungen.
  • Genau: Verhindert mehrere Kundenbenachrichtigungen durch Festlegen des Bestellstatus nur einmal auf „abgeschlossen“.

Alternative Lösungen

  • Verbesserte Version (WooCommerce 3 und höher):
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' );
}
Nach dem Login kopieren
  • Originalantwort (Alle WooCommerce Versionen):
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' );
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage