Blog Debugging mit Leidenschaft

Debugging mit Leidenschaft

Hand an einer Computermaus, im Hintergrund Monitor und Tastatur

Ein Fall aus der WP-Wartung24-Praxis

Wenn eine leere Produkt-Artikelnummer (SKU) für Chaos sorgt: Ein Debugging-Fall aus der WP-Wartung24-Praxis

In unserem Alltag als WordPress-Dienstleister stoßen wir immer wieder auf knifflige Probleme, die oft erst nach langem Debugging ans Licht kommen. Ein aktuelles Beispiel dafür ist ein Bug im WooCommerce Product Bundle Plugin, der gleich für doppeltes Chaos sorgte: Falsche Produkte im Warenkorb und verwirrende Fehlermeldungen über vermeintlich ausverkaufte Artikel.


Der Auslöser: Ein leerer String

Der Fehler trat auf, wenn bei einer Produkt-Bundle-Konfiguration neben den eigentlichen Produkten zusätzlich Text-Elemente eingefügt wurden – etwa zusätzliche Hinweise oder Beschreibungen. Beim Hinzufügen zum Warenkorb entstanden aus diesen Elementen jedoch leere Strings. Dieser leere Wert wurde vom Plugin fälschlicherweise als Artikelnummer interpretiert. Hatte ein Produkt tatsächlich eine „leere Artikelnummer“, wurde es ungewollt dem Bundle hinzugefügt.

Die Konsequenzen:

  • Produkte, die gar nicht ins Bundle gehörten, landeten plötzlich im Warenkorb.
  • War eines dieser irrtümlich hinzugefügten Produkte nicht bestellbar (z. B. Lagerbestand = 0), wurde das gesamte Bundle als nicht verfügbar deklariert.
  • Nutzer*innen erhielten verwirrende Fehlermeldungen nach dem Motto: „Produkt XYZ ist ausverkauft und kann nicht bestellt werden“ – obwohl dieses Produkt gar nicht zum Bundle gehörte.
Screenshot von fehlerhaftem Warenkorb
Fehlermeldung, grüner Balken, Aufschrift: Du kannst Eimer 20L deinem Warenkorb nicht hinzufügen, weil das Produkt derzeit nicht vorrätig ist.

Die Fehlersuche: Auf der Spur des leeren Strings

Um diesen schwer greifbaren Bug zu finden, haben wir uns bei WP-Wartung24 intensiv in den Quellcode des Plugins vertieft. Schritt für Schritt haben wir nachvollzogen, wie das Bundle zum Warenkorb hinzugefügt wird und die einzelnen Bestandteile des Bundles darin verarbeitet werden. Im Laufe der Analyse sind wir auf den leeren String gestoßen, der das Fehlverhalten letztlich ausgelöst hat.

Ein Auszug aus unserer Analyse:

  1. Der Plugin-Code durchläuft beim Hinzufügen zum Warenkorb eine Liste von Produkten, getrennt durch Kommas.
  2. Ein leerer Eintrag im String wird jedoch nicht ignoriert oder ausgefiltert.
  3. Das Plugin behandelt den leeren Wert wie eine Artikelnummer und ruft wc_get_product_id_by_sku() auf.
  4. Erweist sich ein (eigentlich leeres) Feld als vorhandenes Produkt mit leerer SKU, kommt es zum beschriebenen Durcheinander.

Diese Fehlerursache zu entdecken, erforderte eine lange Fehlersuche und das Testen verschiedener Szenarien, bis wir genau nachvollziehen konnten, wo im Plugin-Code die Logik falsch abläuft.


Die Lösung | Debugging: Eine Zeile Code, die alles ändert

Unsere Empfehlung an das Plugin-Entwicklungsteam war daher, den Code so anzupassen: Leere Einträge in der Liste gar nicht erst verarbeitet werden. Etwa mittels einer simplen Abfrage:

if ( empty( $ids_item ) ) continue;

So wird sichergestellt, dass nur tatsächliche Produkt-IDs oder gültige SKUs berücksichtigt werden und kein Phantom-Produkt mit leerer Artikelnummer (SKU) ins Bundle gelangt.

Das Ergebnis:

  • Keine falschen Produkte landen mehr im Warenkorb.
  • Keine verwirrenden Fehlermeldungen zu Artikeln, die gar nicht Teil des Bundles sind.

Offizieller Fix und Nennung im Changelog

Nach unserer Fehlermeldung beim Plugin-Hersteller, mit exakter Fehlerbeschreibung und einem von uns mitgelieferten Lösungsansatz, veröffentlichte dieser umgehend eine aktualisierte Version (8.2.5), in der der Fehler entsprechend unseres Vorschlags behoben wurde. Im Changelog heißt es dazu:

Fixed: Strange product inserted into a bundle when adding to cart (Thanks to WP-Wartung24.de)

Dieser Fix erfreute den Plugin-Hersteller insbesondere auch deshalb, da schon viele Kunden dieses Problem gemeldet hatten. Jedoch wurde bis dato keine Ursache und entsprechend keine Lösung gefunden wurde.

Eine schöne Bestätigung für unsere Arbeit. Weiterhin ist es ein Beispiel dafür, wie wir bei WP-Wartung24 im Hintergrund oft tief in den Code einsteigen, um rätselhafte Bugs zu lösen.


Wofür unser Herz schlägt: Debugging

Dieser Vorfall zeigt eindrucksvoll, wie schon eine scheinbare Kleinigkeit – hier ein leerer String – weitreichende Folgen für Ihren Online-Shop haben kann. Bei WP-Wartung24 sind wir spezialisiert darauf, auch komplizierte Fehlerquellen in Themes, Plugins oder individuellen Code-Anpassungen aufzuspüren und zu beheben.

Wenn Sie ähnliche Probleme mit Ihrem Shop oder Ihrer WordPress-Seite haben, helfen wir Ihnen gern weiter. Kontaktieren Sie uns – wir sorgen dafür, dass alles wieder reibungslos funktioniert.

Besonderer Dank geht an unseren Star-Entwickler: Justin Joe Kostka! 🚀

Schreibe einen Kommentar