
Kurzfassung: WooCommerce speichert alle Produkte als Custom Post Types in
wp_posts, während Attribute und Metadaten (Preis, SKU, Lagerbestand) inwp_postmetaliegen. Kategorien, Tags und Produktattribute werden in der Tabellenfamilie rund umwp_termsabgelegt. Sichtbarkeits- und Produkttyp-Flags werden als Post-Meta-Schlüssel gespeichert.
Manchmal fügen Sie neue WooCommerce-Produkte auf Ihrer Staging-Seite hinzu und möchten diese neuen Produkte einfach auf die Live-Seite übertragen, ohne andere Daten wie Bestellungen und Transaktionen zu beeinträchtigen. Wenn Sie wissen, welche Datenbanktabellen WooCommerce verwendet, wird diese Übertragung sicher und vorhersehbar – Sie kopieren nur die Zeilen mit Produktdaten und lassen die Bestellzeilen unberührt.
Dieser Artikel erfasst jede Tabelle, die WooCommerce-Produktdaten enthält, erklärt die im Alltag wichtigen Spalten und enthält kopierfertiges SQL für die häufigsten Abfragen. Falls Sie sich jemals gefragt haben, warum eine Produktänderung auf Staging nach einem teilweisen Push nicht übernommen wurde, ist die Antwort fast immer eine übersehene Tabelle.
Warum es wichtig ist zu wissen, wo Produkte gespeichert sind
Zu verstehen, wo WooCommerce-Produkte gespeichert sind, ist in mehreren praktischen Situationen nützlich:
- Benutzerdefinierte Abfragen: Abrufen von Produktdaten über SQL-Abfragen für Reports oder benutzerdefinierte Funktionen.
- Datenbankoptimierung: Aufräumen unnötiger Daten zur Verbesserung der Performance.
- Fehlerbehebung: Lösen von Problemen mit fehlenden oder falschen Produktdetails.
- Datenmigration: Verschieben von Produkten zwischen verschiedenen WordPress-Installationen, ohne Bestell- oder Kundendaten anzutasten.
- Fehlende Attribute debuggen: Wenn die Farbe oder Größe eines Produkts im Frontend nicht erscheint, spart das Wissen darüber, welche Taxonomie-Tabelle zu prüfen ist, erhebliche Debugging-Zeit.
Wichtige Tabellen, in denen WooCommerce-Produktdaten gespeichert sind
WooCommerce speichert Produktdaten hauptsächlich in zwei Tabellen:
wp_posts– Enthält Produkteinträge mit dem Post-Typproductoderproduct_variation.

wp_postmeta– Speichert zusätzliche Metadaten für jedes Produkt, verknüpft überpost_id(Produkt-ID).

Tabellenübersicht
Die folgende Tabelle ordnet jeden zentralen Speicherbereich dem zu, was er enthält, sowie den Spalten, die in Abfragen oder Migrationen am häufigsten benötigt werden:
| Tabelle | Was sie speichert | Wichtige Spalten |
|---|---|---|
wp_posts |
Jedes Produkt und jede Variante als Zeile | ID, post_title, post_type = 'product', post_status, post_modified |
wp_postmeta |
Preis, SKU, Lagerbestand, Gewicht, Maße – eine Zeile pro Schlüssel und Produkt | post_id, meta_key, meta_value |
wp_terms |
Kategorie- und Tag-Namen, Attributbezeichnungen | term_id, name, slug |
wp_term_taxonomy |
Legt fest, ob ein Term eine Kategorie, ein Tag oder ein Attribut ist | term_taxonomy_id, taxonomy, description |
wp_term_relationships |
Verknüpft jedes Produkt (object_id) mit seinen Terms |
object_id, term_taxonomy_id |
wp_termmeta |
Zusätzliche Metadaten zu Terms | term_id, meta_key, meta_value |
wp_woocommerce_attribute_taxonomies |
Globale Attributdefinitionen (z. B. Farbe, Größe) | attribute_id, attribute_name, attribute_type |
Praxisbeispiel: ein Produkt mit Preis und Lagerbestand abrufen
Die folgende Abfrage verbindet wp_posts mit wp_postmeta, um Preis und Lagerstatus für ein einzelnes Produkt auszulesen. Ersetzen Sie 12345 durch den ID-Wert des Produkts aus wp_posts:
SELECT
p.ID,
p.post_title,
MAX(CASE WHEN pm.meta_key = '_price' THEN pm.meta_value END) AS price,
MAX(CASE WHEN pm.meta_key = '_stock_status' THEN pm.meta_value END) AS stock_status
FROM wp_posts p
JOIN wp_postmeta pm ON pm.post_id = p.ID
WHERE p.ID = 12345
AND p.post_type = 'product'
GROUP BY p.ID, p.post_title;
In unseren Tests mit WooCommerce 9.x ist der Meta-Schlüssel _price immer gefüllt, selbst wenn das Produkt keinen expliziten Sale-Preis hat – er spiegelt dann den regulären Preis wider. Aus der Erfahrung des WP STAGING-Supports ist die häufigste Verwirrungsquelle die Annahme, WooCommerce verwende eigene, vollständig getrennte Tabellen für Produkte. Das tut es nicht: Es erweitert wp_posts über das Custom-Post-Type-System, sodass jedes Produkt eine Post-Zeile mit dem post_type-Wert product ist.
Schnellreferenz: Finden Sie, was Sie brauchen
Verwenden Sie diese Tabelle, um direkt zur richtigen Tabelle und Spalte zu gelangen, ohne die vollständige Schema-Dokumentation zu lesen:
| Ich möchte … | Tabelle | Filter |
|---|---|---|
| Alle Produkte auflisten | wp_posts |
post_type = 'product' |
| Den Preis eines Produkts finden | wp_postmeta |
meta_key = '_price' |
| Den Sale-Preis eines Produkts finden | wp_postmeta |
meta_key = '_sale_price' |
| Den Lagerstatus prüfen | wp_postmeta |
meta_key = '_stock_status' |
| Die SKU eines Produkts finden | wp_postmeta |
meta_key = '_sku' |
| Produktkategorien eines Produkts auflisten | wp_term_relationships → wp_term_taxonomy → wp_terms |
taxonomy = 'product_cat' |
| Prüfen, ob ein Produkt hervorgehoben ist | wp_term_relationships |
Term-Slug featured in product_visibility |
| Alle Varianten eines Produkts finden | wp_posts |
post_type = 'product_variation' und post_parent = <Produkt-ID> |
Tabellen mit Produktkategorien, Tags und Attributen
Zusätzlich zu den Kerntabellen für Produkte verwendet WooCommerce mehrere Taxonomie-Tabellen, um Produkttypen, Kategorien, Unterkategorien, Tags und Attribute zu verwalten:
wp_terms– Speichert Produktkategorien und Tags.wp_termmeta– Speichert Metadaten für Produkt-Terms.wp_term_taxonomy– Definiert den Taxonomie-Typ (z. B. Kategorie, Tag, Attribut).wp_term_relationships– Verknüpft Produkte mit ihren Kategorien und Attributen.wp_woocommerce_termmeta– Speichert zusätzliche WooCommerce-spezifische Term-Daten.wp_woocommerce_attribute_taxonomies– Verwaltet speziell die Produktattribute.
Wenn ein Produktattribut im Frontend nicht korrekt angezeigt wird, prüfen Sie sowohl wp_term_relationships (um zu bestätigen, dass das Produkt mit dem richtigen Term verknüpft ist) als auch wp_term_taxonomy (um zu bestätigen, dass die Spalte taxonomy mit dem erwarteten Attribut-Slug übereinstimmt).
WooCommerce-Produkttypen und Sichtbarkeit
WooCommerce verwaltet verschiedene Produkttypen über die Taxonomie product_type, die folgende Standardoptionen enthält:
simple– Ein Standardprodukt ohne Varianten.grouped– Eine Sammlung verwandter Produkte.variable– Ein Produkt mit mehreren Varianten.external– Ein auf einer externen Website verkauftes Produkt.
Seit WooCommerce 3+ verwaltet eine neue Taxonomie namens product_visibility:
- Sichtbarkeit in Suche und Katalog – Verwendet Terms wie
exclude-from-searchundexclude-from-catalog. - Hervorgehobene Produkte – Identifiziert durch den Term
featured. - Lagerstatus – Verwendet
outofstock, um nicht verfügbare Produkte zu kennzeichnen. - Bewertungen – Terms wie
rated-1bisrated-5kategorisieren Produktbewertungen.
Jedes Produktattribut wird als eigene Custom Taxonomy gespeichert, was die dynamische Kategorisierung und Filterung von Produkten erleichtert.
Häufige Operationen
Produkte sicher per Post-Typ stapelweise löschen
Um alle Produkte aus einer Test- oder Seed-Datenbank zu entfernen, sprechen Sie wp_posts über den Post-Typ an und bereinigen Sie die zugehörigen Postmeta-Zeilen im selben Vorgang:
-- Remove postmeta first (avoids orphaned rows)
DELETE pm
FROM wp_postmeta pm
JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.post_type IN ('product', 'product_variation');
-- Then remove the product and variation rows
DELETE FROM wp_posts
WHERE post_type IN ('product', 'product_variation');
⚠️ Führen Sie dies immer zuerst gegen eine Staging-Datenbank aus. Dies löscht dauerhaft alle Produktzeilen und ihre Metadaten. Bestelltabellen werden nicht angetastet.
WooCommerce-Produkte von Staging nach Live migrieren
Wenn Sie nur Produkte – keine Bestellungen – aus einer Staging-Umgebung übertragen, ist die minimale Tabellenmenge:
wp_posts– Zeilen mitpost_type IN ('product', 'product_variation')wp_postmeta– Zeilen, derenpost_idzu einem Produkt oder einer Variante gehörtwp_terms,wp_termmeta,wp_term_taxonomy,wp_term_relationships– Zeilen, die mitproduct_cat,product_tagund benutzerdefinierten Attribut-Taxonomien verknüpft sindwp_woocommerce_attribute_taxonomies– falls Sie benutzerdefinierte globale Attributdefinitionen in der Quellumgebung haben
Lassen Sie alle wp_woocommerce_order*– und wp_wc_order*-Tabellen beim Push außen vor – sie einzubeziehen würde Live-Kundenbestellungen mit Staging-Daten überschreiben.
Testproduktdaten zurücksetzen
Nachdem Sie einen Staging-Shop mit Testprodukten befüllt haben, setzen Sie ihn auf einen sauberen Zustand zurück, indem Sie mit der obigen Abfrage Zeilen mit post_type = 'product' löschen. Der selektive Push von WP STAGING lässt Sie zudem festlegen, welche Post-Typen ein- oder ausgeschlossen werden, sodass Sie echte Produkte von Staging nach Live übertragen können, ohne rohes SQL zu schreiben.
Best Practices für das Kopieren von Produktdaten auf eine Live-Seite
Wenn Sie neue Produkte von einer Staging-Seite auf eine Live-Seite übertragen, schützen Sie Bestellungen und Kundendaten, indem Sie diese Schritte befolgen:
- Sichern Sie die Live-Datenbank. Exportieren Sie vor jedem Push einen vollständigen Snapshot, damit Sie sofort wiederherstellen können, falls etwas schiefgeht.
- Kopieren Sie nur relevante Tabellen. Konzentrieren Sie sich auf
wp_posts,wp_postmetaund die Taxonomie-Tabellen. - Schließen Sie bestellbezogene Tabellen aus. Vermeiden Sie Tabellen mit dem Präfix
wp_woocommerce_, sofern Sie nicht ausdrücklich Bestelldaten migrieren möchten. - Verwenden Sie ein Migrationstool. Plugins wie WP STAGING übernehmen selektive Tabellen-Pushes automatisch, einschließlich Suchen-und-Ersetzen in serialisierten Daten für URL-Unterschiede zwischen Umgebungen.
- Prüfen Sie zuerst auf Staging. Führen Sie eine reine Leseabfrage gegen die Staging-Datenbank aus, um die erwarteten Produktzeilenzahlen vor dem Push zu bestätigen.
Fazit
WooCommerce-Produkte werden hauptsächlich in wp_posts und wp_postmeta gespeichert, während Kategorien, Attribute und Sichtbarkeitseinstellungen in zugehörigen Taxonomie-Tabellen verwaltet werden. Diese Struktur zu verstehen, hilft dabei, Produktdaten sicher zu migrieren, ohne den Live-Shop-Betrieb zu beeinträchtigen.
Quellen:
- Normale Tabellen: WordPress-Datenbankbeschreibung
- Spezifische Tabellen: WooCommerce-Datenbankbeschreibung