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

Share on facebook
Share on twitter
Share on linkedin

Ähnliche Beiträge

eCommerce Sales

5 Tipps für eCommerce im Lockdown

eCommerce boomt denn seit Corona versteht jeder den Sinn von Online Shops und Digitalisierung. Wir betreuen Online Shops bereits seit Anfang des Jahrtausends als man die noch selber programmieren musste und möchten Dir an dieser Stelle verraten, wie auch Deine eCommerce-Tools ordentlich Umsatz machen und Dich krisenfest über Wasser halten können.

QR Code

Text zu Tabelle per Shortcode

Shortcodes spielen bei WordPress auch in 2020 noch eine große Rolle für Entwickler. In diesem Artikel lernen wir, wie ein Shortcode Inhalte aus einen Custom Field holen, und formatiert ausgeben kann.

GET IN TOUCH

Kontakt.