Wenn du alle WooCommerce-Produkte aus der Datenbank löschen willst — zum Beispiel vor einem großen CSV-Import, einem Shop-Reset oder einer Datenmigration — ist der Weg über die WordPress-Admin-Oberfläche bei mehr als 200 Produkten zu langsam und führt oft zu Timeouts. Die direkte SQL-Variante ist deutlich schneller, hat aber ihre Tücken: verwaiste Postmeta, hängende Term-Relationships, Bilder im Upload-Ordner und nicht zuletzt das Cache-Problem. Wir zeigen dir den vollständigen Weg.
Vor dem Löschen: Pflicht-Backups
- Vollbackup der Datenbank (z. B. via mysqldump oder dein Hosting-Backup).
- Vollbackup von
wp-content/uploads/falls du auch Produktbilder löschst. - Notiere die aktuelle Anzahl Produkte:
SELECT COUNT(*) FROM wp_posts WHERE post_type='product'.
Methode: Direkter SQL-Befehl in phpMyAdmin (Original)
Das Löschen aller WooCommerce-Produkte direkt in der Datenbank sollte mit Vorsicht behandelt werden, da es irreversible Datenverluste verursachen kann. Es ist immer eine gute Praxis, ein vollständiges Backup Ihrer Website zu erstellen, bevor Sie solche Änderungen vornehmen.
Hier ist, wie Sie alle WooCommerce-Produkte mithilfe von SQL-Befehlen in phpMyAdmin löschen können. Diese Anweisungen beziehen sich auf eine Standard-WooCommerce-Installation. Wenn Sie benutzerdefinierte Tabellen oder Konfigurationen haben, müssen Sie diese dementsprechend anpassen.
- Backup erstellen: Stellen Sie sicher, dass Sie ein vollständiges Backup Ihrer Datenbank haben, bevor Sie irgendwelche Änderungen vornehmen.
- phpMyAdmin öffnen: Melden Sie sich bei Ihrem Webhosting-Kontrollfeld an, finden Sie die Datenbankverwaltungsbereich und öffnen Sie phpMyAdmin.
- Datenbank auswählen: Wählen Sie auf der linken Seite die Datenbank aus, die Ihre WordPress-Website-Daten enthält.
- SQL-Befehl ausführen: Gehen Sie zum „SQL“ oder „SQL ausführen“-Tab in phpMyAdmin, dort können Sie SQL-Befehle direkt ausführen. Hier ist der grundlegende SQL-Befehl, den Sie verwenden würden, um alle Produkte zu löschen:
DELETE relations.*, taxes.*, terms.*
FROM wp_term_relationships AS relations
INNER JOIN wp_term_taxonomy AS taxes
ON relations.term_taxonomy_id=taxes.term_taxonomy_id
INNER JOIN wp_terms AS terms
ON taxes.term_id=terms.term_id
WHERE taxes.taxonomy='product_type';
DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = 'product');
DELETE FROM wp_posts WHERE post_type = 'product';
Bitte beachten Sie, dass Tabellenpräfixe unterschiedlich sein können; standardmäßig ist es wp_, aber es könnte in Ihrer Installation anders sein, und Sie müssen den SQL-Code entsprechend anpassen.
- Datenbank aufräumen: Nachdem Sie die Produkte gelöscht haben, gibt es möglicherweise noch verwaiste Metadaten, die aufgeräumt werden sollten. Überprüfen Sie andere mögliche verwaiste Einträge in der Datenbank, die mit den gelöschten Produkten in Verbindung stehen könnten.
- Website überprüfen: Nachdem die Befehle ausgeführt wurden, überprüfen Sie Ihre Website, um sicherzustellen, dass alles wie erwartet funktioniert.
Noch einmal, diese Methode kann alle Produktinformationen unwiderruflich löschen, also verwenden Sie sie mit Vorsicht und stellen Sie sicher, dass Sie ein Backup haben, auf das Sie zurückgreifen können. Wenn Sie sich bei diesem Prozess nicht sicher sind, ziehen Sie in Erwägung, einen Fachmann zu konsultieren.
Alternative 1: WP-CLI (saubere Methode)
Wer SSH-Zugriff hat, sollte WP-CLI nutzen — es respektiert Hooks und Cache:
# Alle Produkt-IDs holen
wp post list --post_type=product --format=ids > product_ids.txt
# Bei wenigen Produkten direkt löschen
wp post delete $(wp post list --post_type=product --format=ids) --force
# Bei vielen Produkten in Batches
xargs -a product_ids.txt -n 100 wp post delete --force
Alternative 2: Plugin (für kleinere Shops)
Plugins wie WP Bulk Delete oder WP Reset bieten eine GUI-Variante. Vorteil: alle WP-Hooks (z. B. WooCommerce-Lager-Update-Hooks) werden korrekt durchlaufen. Nachteil: langsamer als SQL, oft Timeout-Probleme bei sehr großen Katalogen.
Was nach dem Löschen oft vergessen wird
- Verwaiste Postmeta:
DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts p ON pm.post_id = p.ID WHERE p.ID IS NULL; - Term-Counts aktualisieren: in WP-Admin → Produkte → Kategorien stimmen die Zähler sonst nicht.
wp term recount product_cat product_tag - Cache leeren: WooCommerce-Transients und Object-Cache (Redis/Memcached) explizit flushen.
- Index-Tabellen prüfen:
wp_wc_product_meta_lookupund ähnliche WC-Lookup-Tabellen, sie sollten leer sein. - Sitemap regenerieren — die alten Produkt-URLs müssen aus der Sitemap raus, sonst meldet GSC 404er für gelöschte Produkte.
Häufige Fragen zum Bulk-Delete
Werden auch Bestellungen mitgelöscht?
Nein — nur Posts vom Typ product. Bestellungen sind shop_order und bleiben unverändert. Allerdings verlieren bestehende Bestellungen den Zugriff auf gelöschte Produktdetails, was bei Reklamationen problematisch werden kann.
Was passiert mit den Produktbildern?
Die attachment-Einträge bleiben in wp_posts und die Dateien im Upload-Ordner. Wenn du auch die Bilder weghaben willst: wp media regenerate mit vorherigem orphan-cleanup via Media Cleaner Pro oder ähnlichem Plugin.
Kann ich nach einem versehentlichen Mass-Delete noch retten?
Nur über das Datenbank-Backup — der Trash wird beim SQL-DELETE umgangen. Daher der absolute Pflicht-Backup vor dem Befehl.
Ihr macht das auch als Service?
Ja — wir setzen WooCommerce-Shops produktiv zurück und führen Datenmigrationen mit kompletter SEO-Redirect-Map durch. Anfragen über WooCommerce-Agentur Hamburg.
Sicheres Shop-Setup von Anfang an
Wenn du den Shop ohnehin gerade resettest, ist das oft ein guter Moment, das Setup einmal komplett neu zu denken — von Performance über SEO bis hin zu Sicherheits-Hardening. Mehr dazu auf Shop erstellen lassen.








Sei der Erste, der einen Kommentar hinterlässt!