„Können Sie meine Bestellung auf Größe 32 statt 30 ändern?“ ist eine der häufigsten Nachrichten, die ein Online-Modehändler nach dem Checkout bekommt – und eine, auf die WooCommerce keine eingebaute Antwort hat.
Zwei getrennte Hürden
Die erste Hürde: Bestellpositionen in WooCommerce haben nirgends in der Oberfläche eine Aktion „Variante ändern“. Man kann Menge und Preis einer Position bearbeiten oder sie löschen und ein anderes Produkt neu hinzufügen – aber nur die Variante zu tauschen und Produkt, Preis und Menge beizubehalten, ist nicht vorgesehen.
Die zweite, weniger offensichtliche Hürde: Die native Bearbeitung von Positionen funktioniert nur, solange $order->is_editable() true zurückgibt – bei einer Standardinstallation also nur im Status pending, on-hold oder auto-draft. In der Praxis sind die meisten echten Bestellungen längst auf Processing gewechselt, wenn ein Kunde um eine andere Größe bittet, und damit ist der native Editor komplett gesperrt.
Was wir gebaut haben
Wir haben unter jeder variablen Produktposition auf dem Bearbeitungsbildschirm einen Link Change variant ergänzt – bewusst unabhängig von der WooCommerce-Prüfung is_editable() und nur an Admin-Rechte gebunden, denn eine Variante nachträglich zu korrigieren ist genau der Fall, in dem die Bestellung schon weiter ist. Ein Klick lädt alle Größen-, Farb- und Längenkombinationen des Produkts als anklickbare Buttons und nutzt dieselbe Auswahlkomponente wie der Manual Order Creator.
Die Auswahl einer neuen Variante ruft die WooCommerce-eigene Methode WC_Order_Item_Product::set_variation() auf – dieselbe, die der Checkout intern beim Anlegen der Position nutzt –, sodass die Attribut-Metadaten genau die Form haben, die jeder andere Teil von WooCommerce erwartet, statt einer selbstgebauten Annäherung, die in Bestell-E-Mails oder CSV-Exporten bricht.
Jede Änderung schreibt außerdem eine Bestellnotiz, die genau festhält, was sich geändert hat – etwa von Size 56 / Length 43 / Deep Blue zu Size 50 / Length 43 / Deep Blue –, damit es eine klare Nachverfolgung gibt, falls ein Kunde bestreitet, was er erhalten hat.
Was die Funktion bewusst nicht tut
Die Funktion tauscht nur die Identität der Variante: Größe, Farbe, Länge und Artikelname. Preis, Menge und Lagerbestand werden nicht automatisch angepasst. Das ist eine bewusste Grenze – stillschweigend zu ändern, was einem Kunden berechnet wurde, oder Bestände automatisch anzupassen, sind Entscheidungen, die das Team ausdrücklich treffen sollte, nicht Nebenwirkungen einer Größenkorrektur.
Die wichtigsten Erkenntnisse
- Eine Funktion, die nur funktioniert, solange eine Bestellung im engen Sinne der Plattform „bearbeitbar“ ist, löst oft den falschen Fall – der echte Bedarf entsteht, wenn dieses Fenster schon geschlossen ist.
- Die Setter-Methoden der Plattform zu nutzen statt Metadaten direkt zu schreiben, hält individuelle Änderungen mit allem kompatibel, was diese Daten liest.
- Ausdrücklich festzulegen, was eine Funktion nicht anfasst (Preis, Bestand), ist genauso wichtig wie das, was sie tut.
Weiterlesen: die Bestellvorschau erweitern, wie wir ein Tool für manuelle Bestellungen gebaut haben.
Stoßen Sie in Ihrem eigenen WooCommerce- oder WordPress-Adminbereich an eine ähnliche Grenze? Sprechen wir darüber – ArtinTech Solution baut genau diese Art von individuellen Shop-Tools.