01 · Aufgabe
Aufgabe
Perfect Blue verkauft Spiele und Zubehör für Konsolen, mehrere tausend Produkte, mit Traffic, der von Neuerscheinungen und Vorbestellungen bestimmt wird. Fertige WooCommerce-Plugins hatten die Funktionen nicht, die der Kunde erwartete: Listen der Neuerscheinungen, wieder verfügbare Titel und Preissenkungen, berechnet aus der tatsächlichen Senkung und nicht aus einem durchgestrichenen Preis. Der Kunde wollte diese Dinge auf der Startseite und auf eigenen Unterseiten zeigen, mit Reitern je Plattform, so wie in seinem Entwurf. Ein eigenes Thema war die Geschwindigkeit: Der Shop mit mehreren hunderttausend Einträgen in den Bestelltabellen antwortete angemeldeten Kunden langsam.
02 · Lösung
Lösung
Ich habe ein Plugin geschrieben, in dem jedes Modul ein eigener, abschaltbarer Teil ist:
- Kalender der Neuerscheinungen: Monatsraster und Liste der kommenden Titel, aufgebaut aus den bei den Produkten gespeicherten Erscheinungsdaten,
- Preissenkungen und wieder verfügbare Artikel: eigene Zeitstempel am Produkt. Der Stempel entsteht bei einer echten Preissenkung oder wenn ein Artikel wieder auf Lager ist, sodass die Listen zeigen, was tatsächlich passiert ist,
- Neuheiten und Bestseller: Bestseller aus den Bestellungen der letzten 30 Tage, getrennt nach Plattformen und mit eigenem Reiter für Vorbestellungen,
- Sortierung: ausverkaufte Produkte rutschen ans Ende jeder Liste, auch nach dem Filtern,
- Einstellungen: Namen der Abschnitte, Reihenfolge der Reiter und Limits ändert der Kunde selbst.
Die Module entstanden in der Testumgebung, mit automatischen Tests und Qualitätskontrolle des Codes bei jeder Änderung. Vor dem Deployment auf den Live-Shop durchlief der Code ein eigenes Sicherheitsaudit. Parallel habe ich ein Performance-Audit gemacht: die Menge der bei jedem Seitenaufruf geladenen Daten begrenzt, das Sortieren der Produktlisten beschleunigt, sodass der Shop einige tausend statt mehrerer Millionen Zeilen durchsucht, und den Cache so eingestellt, dass die Preise in den Modulen immer aktuell sind und der Shop nicht bei jedem Aufruf Hunderte Produktkarten neu aufbaut. Solche Module beschreibe ich unter Onlineshop erstellen lassen.
03 · Ergebnis
Ergebnis
Startseite und Unterseiten des Shops zeigen Neuerscheinungen, Preissenkungen, wieder verfügbare Artikel und Bestseller ohne manuell gepflegte Listen. Das Sortieren der Produktlisten durchsucht einige tausend statt mehrerer Millionen Zeilen. Weitere Korrekturen und Module kommen auf demselben Weg in den Shop: zuerst in die Testumgebung, dann in den Live-Shop.