Praktisches Beispiel für die Automatisierung mit WordPress

Spätestens wenn du das Wort \”Migration\” hörst, dann solltest du innehalten und über Automatisierung nachdenken. Migrationsprojekte sind in der Regel immer mit dem Kopieren von Daten verbunden: Ein altes System wird abgelöst, ein neues wird hochgefahren, aber die Daten müssen selbstverständlich im neuen System vorhanden sein.

Bei Millionen von Datensätzen ist es selbstverständlich, dass das nicht händisch gemacht wird, in meinem Beispiel ging es um lediglich 150 Datensätze und dennoch war die Automatisierung ein vielfaches schneller (Remember: Automatisieren ist eine Einstellungssache)

Der Arbeitsprozess war wie folgt:

  • Produktekategorie Öffnen
  • Ein Produkt aus dieser Produktekategorie suchen
  • Bild URL des Produkts anschauen
  • Name des Bildes kopieren
  • In der Produktkategorie das Bild des Produktes hinzufügen

Dieser ganze Prozess dauert etwa 30 Sekunden und ist extrem stupide. Bei 150 Kategorien dauert das also 75 Minuten und braucht sehr viele Nerven.

Hier mein Ansatz:

def update_category_images():
    wcapi = get_woocommerce_object(app)
    page = 1
    more = True
    while more:
        response = wcapi.get(f\'products/categories?per_page=30&page={page}\')
        if response.ok:
            categories = response.json()
            if len(categories) == 0:
                more = False
            for cat in categories:
                result = wcapi.get(\"products?category=\" + str(cat[\"id\"]))
                if result.ok:
                    products = result.json()
                    if len(products) > 0:
                        product = products[0]
                        cat[\'image\'] = product[\"images\"][0]
                        res = wcapi.put(f\"products/categories/{cat[\'id\']}\", cat)
                        if res.ok:
                            print(\"update ok\")
                        else:
                            print(\"update not ok\")
                print(cat[\"name\"])
        page = page + 1
    return \"done\"

Das zu schreiben hat gerade mal 20 Minuten gedauert und die Migration gelöst. Damit habe ich auch gleich einen Baustein (bzw. Prozess) für die Zukunft: Sollte aus irgendeinem Grund wieder die gleiche Aufgabe wieder auftauchen, kann ich lediglich den Prozess aufrufen und zurücklehnen und warten.

Fazit

Du kannst daraus zwei Lektionen mitnehmen

  • Arbeite immer mit System, welche eine Schnittstelle hat (API)
  • Grundlegende Programmierkenntnisse sind unbezahlbar!