wedevtrust Logo

WooCommerce Metadata mit SQL Manipulieren

WooCommerce hat, mit Germanized an Board, mehrere Möglichkeiten Artikelnummern zu speichern. Hat der Praktikant zwei Tage lang bei den 3000 Artikeln des WooCommerce Onlineshops die EAN in das falsche Feld eingegeben? Dann muss ein SQL-Superheld den Tag retten der Inhalte in kürzester Zeit von einem Feld in's andere kopieren kann.

Multichannel eCommerce kommt uns in letzter Zeit ziemlich häufig unter. Dabei sitzt ein Cloud-ERP, plentymarkets beispielsweise,  auf dem Warenwirtschaftssystem unseres Kunden auf und verteilt Produkte, Bestände und Preise in Vertriebsplattform wie Amazon, ebay, Zalando, Rakuten und auch den eigenen Onlineshop.

Wir hatten aktuell die Anforderung, dass unser Kunde eine EAN in der Warenwirtschaft bepflegt hatte und diese auch im WooCommerce-Shop als GTIN hinterlegt war. Damit konnte der Multi-Channel-Service-Anbieter, in diesem Fall cloudstock, wenig anfangen. Deren Software ist darauf ausgelegt Bestand und Preis der Artikel über die WooCommerce-Artikelnummer (SKU) abzugleichen.

Unser Kunde hatte nun die Wahl entweder alle EANs vom Azubi in das richtige Feld schreiben zu lassen, eine Umprogrammierung des Abgleichsverfahrens von cloudstock zu finanzieren oder SQL-Superhelden wie uns um Hilfe zu bitten. Da wir ausschliesslich mit Spitzenkunden arbeiten war die Entscheidung schnell gefallen:

Nachbesprechung

Bei WordPress ist eigentlich alles ein Beitrag (post) da es ursprünglich als Blogging-CMS gedacht war. Seiten sind eigentlich auch nur Beiträge ohne Taxonomie, also ohne Kategorien und Schlagworte. WooCommerce Produkte wiederum sind spezielle Beiträge (Custom Post Types) mit zusätzlich Preis und Bestand. Alle Post Types, Native und Custom, werden in der Tabelle wp_post in die Datenbank gespeichert. Zusätzliche Angaben zu den Beiträgen, SKU und GTIN der Produkte in diesem Fall, werden in die Tabelle wp_postmeta gespeichert. Dort finden wir also sowohl die GTIN von Germanized als _ts_gtin und die WooCommerce-native Artikelnummer als _sku.

Um nun den Wert von _ts_gtin zu _sku zu schreiben, machen wir einen sogenannten Selfjoin  anhand der Beitrags-ID (post_id) da sich sowohl Quelle als auch Ziel in der selben Tabelle befinden. Wir wollen diese Operation nur bei Produkten ausführen und beschränkung uns daher auf Einträge die Überhaupt ein _sku haben.

Bei solch heiklen Operationen, die die komplette Datenbank zerstören könnten, ist es ausserordentlich wichtig den Prozess in einer Sandbox zu entwickeln und zu testen. Und bevor das Verfahrend dann im Produktiv-System appliziert wird ist sicherzustellen, dass der Zustand vor dem Ausführen des SQL-Statements wiederherstellbar ist. Unter Umständen durch

Derartige Workflows sind absolut erforderlich bei Systemen die sich permanent verändern. Bei umsatzstarken Onlineshops bei denen kontinuierlich Bestellungen eingehen beispielsweise.

Das funktioniert übrigens nicht nur bei WooCommerce. Viele Plugins, und sogar WordPress selbst, speichern Informationen zum Beitrag häufig in den Metadaten. Und wer Manipulation auf Datenbankebene im Griff hat kann Aufgaben oft in Minuten erledigen die sonst Tage dauern und somit viel Geld kosten würden.

Wir hoffen wir konnten Dir SQL in Verbindung mit WordPress-Metadaten ein wenig näher bringen. Vielleicht ist dieser Beitrag ja der erster Schritt auf Deinem persönlichen Weg zum Datenbankmagier.

Teilen

Ähnliche Beiträge

WooCommerce Shipping

WooCommerce-Versandklassen: Leitfaden für effektiven eCommerce-Versand

In diesem Blogbeitrag tauchen wir tief in die Welt von WooCommerce ein und lüften die Geheimnisse für das nahtlose Verwalten von speziellen Versandklassen. Diese spezialisierten Klassen ermöglichen es, unterschiedliche Versandregeln für bestimmte Produktkategorien anzuwenden, wodurch die Transparenz und Bequemlichkeit des Einkaufserlebnisses Ihrer Kunden verbessert wird.

Time to Update

Wartung Umsatzstarker WooCommerce Shops

Was tun, wenn Plugin Updates bei einem hochfrequentierten Onlineshop plötzlich Probleme verursachen? Vor dieser Aufgabe standen wir, als ein Wartungsintervall zunächst erfolgversprechend aussah, dann aber unter Last zu einer Nichterreichbarkeit des umsatzstarken WooCommerce Shops unseres Kunden führte.

GET IN TOUCH

Kontakt.