
🏪 Eigene WooCommerce-Bestellstatus: so erstellen und konfigurieren sie sie
Wir haben die Bestellung bearbeitet, aber für diese Phase gibt es keinen Standardstatus. „In Bearbeitung" für die Montage, „Abgeschlossen" für den Versand, und dazwischen eine Lücke. Der Shop wächst, und die sieben Standardstatus von WooCommerce reichen nicht mehr aus.
Sie können einen benutzerdefinierten Status auf zwei Arten hinzufügen: mit ein paar Codezeilen in der functions.php oder mit einem fertigen Plugin. Beide Wege funktionieren und beeinträchtigen die standardmäßige Bestelllogik nicht. Nachfolgend Schritt für Schritt, mit getestetem Code und einer Alternative ohne Programmierung.
💡 Kurzüberblick:
- Welche Status WooCommerce standardmäßig mitbringt und warum sie nicht ausreichen
- Registrierung eines benutzerdefinierten Status per PHP-Code
- Hinzufügen mehrerer Status und benutzerdefinierter E-Mail-Benachrichtigungen
- Plugins für Bestellstatus, wenn Code nicht infrage kommt
- Antworten auf häufige Fragen: HPOS, Farben, Löschung, Übersetzung
Welche Status WooCommerce standardmäßig mitbringt
Standardmäßig stellt WooCommerce sieben Bestellstatus bereit. Jeder ist eng mit einem bestimmten Punkt im Lebenszyklus verknüpft:
Status | Bedeutung |
|---|---|
Zahlung ausstehend | Bestellung angelegt, Zahlung nicht eingegangen |
In Bearbeitung | Zahlung eingegangen, Bestellung wird bearbeitet |
Abgeschlossen | Bestellung ausgeführt und abgeschlossen |
Zurückgestellt | Warten auf Zahlungsbestätigung |
Storniert | Vom Kunden oder Administrator storniert |
Erstattet | Betrag zurückgezahlt |
Fehlgeschlagen | Zahlung fehlgeschlagen |
Für einen typischen Shop ist dieser Satz ausreichend. Sobald jedoch eine individuelle Verarbeitungslogik hinzukommt, etwa Auftragsfertigung oder mehrstufige Lieferung, reichen sieben Status nicht mehr aus. Sie benötigen „In Montage", „An Lieferdienst übergeben", „Warten auf Vorauszahlung" oder „Erfordert Prüfung durch den Manager".
Schritt 1: Registrierung eines benutzerdefinierten Status per Code
Vor WooCommerce 3.0 nutzten Status die Taxonomie shop_order_status, und das Hinzufügen eines neuen Status war nicht trivial. Jetzt ist es einfacher: Ein Bestellstatus ist ein Beitragsstatus des benutzerdefinierten Beitragstyps shop_order. Er wird mit einer einzigen Funktion register_post_status() und dem Filter wc_order_statuses registriert.
Der Code wird in die functions.php des Child-Themes eingefügt. Erstellen Sie vor jeder Bearbeitung ein vollständiges Website-Backup.
1 // Registering a new order status 2 function sdstudio_register_custom_order_status() { 3 register_post_status( 'wc-preparing', array( 4 'label' => 'In assembly', 5 'public' => true, 6 'exclude_from_search' => false, 7 'show_in_admin_all_list' => true, 8 'show_in_admin_status_list' => true, 9 'label_count' => _n_noop( 10 'In assembly (%s)', 11 'In assembly (%s)', 12 'sdstudio' 13 ), 14 ) ); 15 } 16 add_action( 'init', 'sdstudio_register_custom_order_status' ); 17 18 // Adding status to WooCommerce list 19 function sdstudio_add_custom_order_status( $order_statuses ) { 20 $order_statuses['wc-preparing'] = 'In assembly'; 21 return $order_statuses; 22 } 23 add_filter( 'wc_order_statuses', 'sdstudio_add_custom_order_status' );
Nach dem Speichern der functions.php erscheint der neue Status im Dropdown-Menü für Bestellstatus im Admin-Bereich und in den WooCommerce-Berichten. Das System behandelt ihn als vollwertigen Status, Sie können Bestellungen filtern, den Status manuell ändern und ihn in Hooks verwenden.
Was hier passiert
Die Funktion register_post_status() erstellt einen neuen Beitragsstatus mit dem Präfix wc-, das ist eine WooCommerce-Konvention. Der Parameter label legt den lesbaren Namen im Admin-Bereich fest. label_count sorgt über _n_noop() für die korrekte Anzeige der Zähler in der deutschen Benutzeroberfläche.
Der Filter wc_order_statuses fügt den Status dem Array hinzu, das WooCommerce zum Erstellen der Liste verwendet. Ohne diesen Schritt ist der Status zwar im System registriert, erscheint aber nicht im Dropdown-Menü der Bestellungen.

Optisch sieht das Ergebnis genau so aus, der neue Status wird in der allgemeinen Liste neben den Standardstatus angezeigt.
Schritt 2: Mehrere Status und E-Mail-Benachrichtigungen hinzufügen
Für einen Status funktioniert der obige Code einwandfrei. Wenn Sie mehrere benötigen, duplizieren Sie einfach register_post_status() innerhalb derselben Funktion und fügen Sie einen Eintrag zum Array $order_statuses hinzu. Beispiel für einen Shop mit Auftragsfertigung:
1 function sdstudio_register_multiple_statuses() { 2 // Status "In production" 3 register_post_status( 'wc-in-production', array( 4 'label' => 'In production', 5 'public' => true, 6 'exclude_from_search' => false, 7 'show_in_admin_all_list' => true, 8 'show_in_admin_status_list' => true, 9 'label_count' => _n_noop( 10 'In production (%s)', 11 'In production (%s)', 12 'sdstudio' 13 ), 14 ) ); 15 16 // Status "Ready to ship" 17 register_post_status( 'wc-ready-to-ship', array( 18 'label' => 'Ready to ship', 19 'public' => true, 20 'exclude_from_search' => false, 21 'show_in_admin_all_list' => true, 22 'show_in_admin_status_list' => true, 23 'label_count' => _n_noop( 24 'Ready to ship (%s)', 25 'Ready to ship (%s)', 26 'sdstudio' 27 ), 28 ) ); 29 } 30 add_action( 'init', 'sdstudio_register_multiple_statuses' ); 31 32 function sdstudio_add_multiple_statuses( $order_statuses ) { 33 $order_statuses['wc-in-production'] = 'In production'; 34 $order_statuses['wc-ready-to-ship'] = 'Ready to ship'; 35 return $order_statuses; 36 } 37 add_filter( 'wc_order_statuses', 'sdstudio_add_multiple_statuses' );
Hinweis: Die Statuskennung (das erste Argument von register_post_status) beginnt immer mit wc-. Ohne dieses Präfix erkennt WooCommerce den Status nicht.
E-Mail-Benachrichtigungen für benutzerdefinierte Status
Standardmäßig versendet WooCommerce keine E-Mails beim Wechsel zu einem benutzerdefinierten Status. Um Benachrichtigungen zu aktivieren, fügen Sie den Filter woocommerce_email_actions hinzu:
1 function sdstudio_add_custom_status_email( $email_actions ) { 2 $email_actions[] = 'woocommerce_order_status_wc-preparing'; 3 $email_actions[] = 'woocommerce_order_status_wc-in-production'; 4 return $email_actions; 5 } 6 add_filter( 'woocommerce_email_actions', 'sdstudio_add_custom_status_email' );
Danach können Sie die E-Mail-Vorlage unter WooCommerce → Einstellungen → E-Mails konfigurieren, der neue Status erscheint in der Liste der Auslöser zur Anpassung. Die Vorlage wird im Child-Theme unter dem Pfad woocommerce/emails/ erstellt, die Datei wird nach dem Muster customer-<status>.php benannt.
Plugins für Bestellstatus: Wenn Code nicht infrage kommt
Code ist nicht der einzige Weg. Wenn Sie die functions.php nicht bearbeiten möchten oder Status häufig ändern müssen, gibt es Plugins. Zwei Hauptoptionen:
WooCommerce Order Status Manager, die offizielle Erweiterung von WooCommerce. Bietet eine Oberfläche zum Erstellen und Bearbeiten von Status direkt aus dem Admin-Bereich: WooCommerce → Einstellungen → Bestellstatus. Unterstützt E-Mail-Benachrichtigungen, Symbole, Farben und den Import/Export von Status. Kostenpflichtig, in einigen WooCommerce-Tarifen enthalten.
Flexi Custom Order Status, ein kostenloses Plugin aus dem Katalog von WordPress.org. Bietet ebenfalls einen visuellen Editor für Status, jedoch mit weniger Funktionen. Geeignet für einfache Szenarien: Status hinzugefügt, Farbe zugewiesen, E-Mail aktiviert.
Welchen Weg Sie wählen sollten:
- Sie benötigen ein oder zwei Status und scheuen den Code nicht,
functions.phpgenügt. - Es gibt viele Status, sie ändern sich häufig oder die Website wird von einem Kunden ohne technische Kenntnisse verwaltet, greifen Sie zu einem Plugin.
- Sie nutzen HPOS (High-Performance Order Storage), beide Wege funktionieren. Status basieren weiterhin auf
register_post_status(), HPOS hat keinen Einfluss darauf.
Das kurze Video oben zeigt den Prozess des Hinzufügens eines benutzerdefinierten Status in fünf Minuten, von der Plugin-Installation bis zur ersten Verwendung in Bestellungen.
⁉️🤔 Häufige Fragen
Funktioniert ein benutzerdefinierter Status mit HPOS?
Ja, vollständig. HPOS ändert die Art und Weise, wie Bestelldaten gespeichert werden, berührt aber nicht den Beitragsstatus. Die Funktion
register_post_status()bleibt der Hauptmechanismus, Ihr Code funktioniert sowohl mit aktiviertem als auch mit deaktiviertem HPOS.
Kann man einem benutzerdefinierten Status eine Farbe zuweisen?
Per Code nur mit CSS-Stilen im Admin-Bereich: Hängen Sie sich an die Klasse
.status-wc-preparingund legen Sie den Hintergrund fest. Bequemer über Plugins: Order Status Manager und Flexi bieten eine visuelle Farbauswahl ohne eine einzige Codezeile.
Wie löscht man einen erstellten Status?
Entfernen Sie ihn aus
register_post_status()und aus dem Filterwc_order_statuses. Bestellungen mit diesem Status verschwinden nicht, sie bleiben in der Datenbank, aber der Status wird nicht mehr in der Dropdown-Liste angezeigt. Verschieben Sie vor dem Löschen alle Bestellungen mit dem zu entfernenden Status in einen anderen, damit Sie sie nicht aus den Augen verlieren.
Wie übersetzt man Status in eine andere Sprache?
Der Parameter
labelinregister_post_status()akzeptiert eine Zeichenkette, geben Sie den Namen in der gewünschten Sprache an. Wenn die Website mehrsprachig ist, umschließen Sie die Zeichenkette mit einem Aufruf von__()oder_x()mit einer Text-Domain und übersetzen Sie sie wie jeden anderen Theme-Text über.po/.mo-Dateien.
Ist das Präfix wc- zwingend erforderlich?
Ja. WooCommerce filtert Status nach diesem Präfix. Wenn Sie einen Status ohne
wc-registrieren, erscheint er nicht im Admin-Bereich der Bestellungen. Ausnahme: Plugins, sie fügen das Präfix selbst hinzu oder umgehen die Filterung mit internen Mechanismen.
Kann man einen benutzerdefinierten Status ohne Code und ohne Plugin hinzufügen?
Ohne Code und ohne Plugin, nein. WooCommerce bietet standardmäßig keine Oberfläche zum Erstellen von Status. Der minimale Weg ohne Programmierung: das kostenlose Flexi Custom Order Status aus dem WordPress.org-Katalog. Installation mit einem Klick, Konfiguration über den Admin-Bereich.
Was Sie für Ihre Aufgabe verwenden sollten
Benutzerdefinierte Bestellstatus sind einer jener WooCommerce-Mechanismen, die man leicht übersieht, solange der Shop klein ist. Sobald jedoch Produktion, gestaffelte Logistik oder manuelle Bestellprüfung hinzukommen, verwandelt sich der Admin-Bereich ohne sie in ein Chaos aus vagen Notizen.
- Sie benötigen ein oder zwei Status und haben schon einmal die
functions.phpbearbeitet, der Code aus Schritt 1 erledigt die Aufgabe in fünf Minuten. - Sie benötigen einen visuellen Editor und Farbeinstellungen für den Kunden, Flexi Custom Order Status (kostenlos).
- Status sind Teil eines komplexen Geschäftsprozesses mit E-Mail-Szenarien und Dutzenden von Stufen, WooCommerce Order Status Manager (offizielle Erweiterung).
Prüfen Sie, welcher Ansatz besser zu Ihnen passt, und fügen Sie noch heute Ihren ersten benutzerdefinierten Status hinzu. Wenn Sie eine andere Methode verwenden oder ein Plugin kennen, das nicht im Artikel vorkommt, teilen Sie es in den Kommentaren mit.



