Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich den WooCommerce-Auftragsabschluss für bestimmte Zahlungsmethoden automatisieren?

Wie kann ich den WooCommerce-Auftragsabschluss für bestimmte Zahlungsmethoden automatisieren?

DDD
DDDOriginal
2024-12-11 06:32:09717Durchsuche

How Can I Automate WooCommerce Order Completion for Specific Payment Methods?

Ü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!

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