WooCommerce Bestellungen automatisch auf „Erledigt“ setzen
In manchen WooCommerce-Shops ist kein klassischer Versandprozess notwendig. Beispielsweise wenn Produkte nur zur Abholung angeboten werden, digitale Leistungen verkauft werden oder Kunden auf Rechnung bezahlen und keine manuelle Bearbeitung erforderlich ist.
In solchen Fällen kann es sinnvoll sein, Bestellungen automatisch auf den Status „Erledigt“ (Completed) zu setzen, sobald sie erstellt wurden. Dadurch entfällt der manuelle Schritt im Backend und der Workflow wird deutlich vereinfacht.
Mit dem folgenden Snippet wird jede Bestellung, die zunächst den Status „In Wartestellung“ (on-hold) erhält, automatisch auf „Erledigt“ umgestellt.
PHP Snippet
<?php
// Status autmatisch auf erledigt ändern.
function auto_complete_order_on_hold_to_completed( $order_id ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
if ( $order ) {
if ( 'on-hold' === $order->get_status() ) {
$order->update_status( 'completed' );
}
}
}
add_action( 'woocommerce_order_status_changed', 'auto_complete_order_on_hold_to_completed', 10, 3 );
Was macht dieser Code?
Das Snippet reagiert auf den WooCommerce-Hook woocommerce_order_status_changed, der jedes Mal ausgelöst wird, wenn sich der Status einer Bestellung verändert.
Der Code prüft dabei:
- Ob eine gültige Bestellung vorhanden ist
- Ob der aktuelle Status „on-hold“ (In Wartestellung) ist
Wenn beide Bedingungen erfüllt sind, wird der Status automatisch auf „completed“ (Erledigt) gesetzt.
Damit wird der normale Bearbeitungsschritt im Backend übersprungen.
Typische Einsatzfälle
Dieses Snippet eignet sich besonders für Shops, bei denen keine klassische Bestellabwicklung notwendig ist, zum Beispiel:
Abholung im Laden / Click & Collect
Bestellungen auf Rechnung
Digitale Leistungen oder Dienstleistungen
Vorbestellungen ohne Versandprozess
In solchen Szenarien spart die automatische Statusänderung Zeit und verhindert unnötige manuelle Klicks im WooCommerce-Backend.