Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich bezahlte WooCommerce-Bestellungen basierend auf der Zahlungsmethode automatisch abschließen?

Wie kann ich bezahlte WooCommerce-Bestellungen basierend auf der Zahlungsmethode automatisch abschließen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-11 09:18:18689Durchsuche

How to Automatically Complete Paid WooCommerce Orders Based on Payment Method?

So implementieren Sie die bedingte automatische Vervollständigung für bezahlte WooCommerce-Bestellungen

In WooCommerce treten bei virtuellen Produkten häufig Probleme mit der automatischen Auftragsvervollständigung auf. Dieser umfassende Leitfaden bietet mehrere Lösungen zur Behebung dieses Problems, einschließlich eines benutzerdefinierten Code-Snippets und Plugin-Optionen. Erwägen Sie für einen detaillierteren Ansatz die Implementierung von bedingtem Code basierend auf WooCommerce-Zahlungsmethoden.

Bedingter Code für die automatische Vervollständigung bezahlter Bestellungen

Um die Funktion zur automatischen Vervollständigung basierend auf Zahlungsmethoden selektiv anzuwenden , nutzen Sie den Filter-Hook woocommerce_paid_complete_order_status, der ausgelöst wird, wenn beim Bezahlvorgang eine Zahlung erforderlich ist. Hier ist eine verbesserte Version, die mit WooCommerce 3 und höher kompatibel ist:

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

Dieser Code ändert den zulässigen Status einer bezahlten Bestellung für alle Zahlungsgateways außer „Banküberweisung“ (bacs) und „Nachnahme“ in „abgeschlossen“. (Kabeljau) und „Cheque“ (Scheck).

Zusätzlich Überlegungen

  • Diese Methode vermeidet das Senden mehrerer Kundenbenachrichtigungen für Bestellstatusänderungen (Verarbeitung bis abgeschlossen).
  • Sie ist leichtgewichtig und effektiv, da sie nur ausgelöst wird, wenn eine Online-Zahlung erfolgt erforderlich.

Alternativen

Verbesserte Version (2018)

add_action( 'woocommerce_thankyou', 'wc_auto_complete_paid_order', 20, 1 );
function wc_auto_complete_paid_order( $order_id ) {
    // No updates for Bank wire, Cash on delivery, and Cheque
    if ( in_array( $order->get_payment_method(), array( 'bacs', 'cod', 'cheque', '' ) ) ) {
        return;
    } 
    // Autocomplete all others
    else {
        $order->update_status( 'completed' );
    }
}

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 ) {
    // No updates for Bank wire, Cash on delivery, and Cheque
    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;
    } 
    // Autocomplete all others
    else {
        $order->update_status( 'completed' );
    }
}

Hinweis: Seien Sie sicher um die Codeausschnitte in der Datei „functions.php“ Ihres untergeordneten Themas zu platzieren.

Das obige ist der detaillierte Inhalt vonWie kann ich bezahlte WooCommerce-Bestellungen basierend auf der Zahlungsmethode automatisch abschließen?. 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