WooCommerce – eine kleine Einführung in die Struktur von Order ID, Order Items ID, Order Meta

WooCommerce (WC) ist ein großartiges E-Commerce-Tool und arbeitet mit WordPress sehr gut zusammen.

Man bekommt mit WC einen WebShop mit dem Look and Feel von WordPress im Backend. Wer also recht firm in WordPress ist, wird mit WooCommerce gleich gut zurecht kommen.

Aber wie schaut’s denn mit der Datenstruktur aus?

Wo werden grundlegende Daten in der Datenbank gespeichert? Hier und jetzt gibt’s ein bisserl Licht in’s Dunkle!

tl;dr

Um an Bestellzeilen-Metas zu kommen gehe ich den Weg:

  1.  Post-ID aus Tabelle Posts holen = order_id
  2. Hole order_item_id von der Zeile line_item aus woocommerce_order_items mit order_id .
  3. Mit order_item_id in woocommerce_order_itemmeta holt man nun das entsprechende Meta

 

Tabellenstruktur / Datenbankschema

Als kurze Übersicht und Einführung zum besseren Verständnis empfiehlt es sich, mal kurz das Datenbankschema von WooCommerce durchzugehen:

 

Die zwei Tabellen, die in dem Artikel hauptsächlich behandelt werden sind so aufgebaut und verknüpft:

Order Items und Order Item-Meta Tabellen

Wie wird eine Bestellung gespeichert?

  • Ganz normal als WordPress-Post in der Tabelle posts
  • Der Post hat einen eigenen Custom Post Type mit Namen shop_order
    • Hier ein Beispiel einer Bestellung mit der Post-ID 1092

 

Wo werden die Bestellzeilen, Produktzeilen, USt-Zeilen usw gespeichert?

  • Dafür legt WooCommerce eine eigene Tabelle mit dem Namen woocommerce_order_items an.
  • Die order_id ist die post_id der Bestellung und verknüpft somit die beiden Tabellen:

Die order_item_id oder : Wie ist ein Produkt mit den Produktmetadaten verknüpft

  • Bestellzeilen-Metas sind in der Tabelle woocommerce_order_itemmeta daheim
  • In der vorhin beschriebenen Tabelle woocommerce_order_items gibt es eine order_item_id für jedes bestellte Produkt.
  • Für alle Produkte kann es Metafelder geben. Die Metafelder sind mit dem Produkt (=dem Order-Item) über die Order-Item-ID verknüpft. In unserem Fall zb die ID 1438.

Daten in der normalen Postmetas/Custom Fields

Da ging es jetzt um die WC eigenen Tabellen. Natürlich werden einige Daten auch in der normalen postmeta-Tabelle gespeichert. An die ranzukommen ist aber eh keien große Kunst:

Bestellungsdaten in der Postmeta-Tabelle von WordPress.

2 Gedanken zu „WooCommerce – eine kleine Einführung in die Struktur von Order ID, Order Items ID, Order Meta

  1. super hat mir geholfen, da durch den Bug mit den Gleitkommazahlen, der Gesamtbetrag nicht richtig ausgewiesen wurde.

    Gibt es Tipp wie man nicht eingelöste Warenkörbe einsehen kann?

    1. Servus!
      Mit „nicht eingelöste Warenkörbe“ meinst du wahrscheinlich Kunden, die Waren in den Warenkorb gelegt und nicht ausgecheckt haben?
      Ich kenne kein Plugin oder Codesnippet, welche dieses Problem lösen könnte.
      Dafür braucht’s eigenen Code, der diese Daten rauszuzelt!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.