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
Freigeben: 2024-12-11 09:18:18
Original
618 Leute haben es durchsucht

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

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

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!

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