Code Snippets

Διαγραφή προϊόντων WooCommerce από συγκεκριμένο WP All Import με SQL

22 Νοεμβρίου, 2025 Χρόνος ανάγνωσης 2 λεπτά
Διαγραφή προϊόντων WooCommerce από συγκεκριμένο WP All Import με SQL

Η διαχείριση χιλιάδων προϊόντων στο WooCommerce συχνά απαιτεί μαζικές εισαγωγές με το WP All Import. Αλλά τι γίνεται αν χρειαστεί να διαγράψετε όλα τα προϊόντα που προήλθαν από μια συγκεκριμένη εισαγωγή;

Αντί να τα σβήνετε χειροκίνητα ένα-ένα, μπορείτε να εκτελέσετε ένα SQL query απευθείας στη βάση δεδομένων σας. Αυτή η μέθοδος εξασφαλίζει μια καθαρή διαγραφή προϊόντων, παραλλαγών και όλων των σχετικών δεδομένων τους (συνημμένα, μεταδεδομένα, σχέσεις).

Γιατί να διαγράψετε προϊόντα βάσει Import ID;

Υπάρχουν αρκετές περιπτώσεις όπου αυτό είναι απαραίτητο:

  • Κάνατε δοκιμαστική εισαγωγή σε staging και θέλετε να την αναιρέσετε.

  • Κάνατε κατά λάθος εισαγωγή διπλότυπων προϊόντων.

  • Θέλετε να αντικαταστήσετε ολόκληρο το product feed ενός προμηθευτή.

Στοχεύοντας το import_id που χρησιμοποιεί το WP All Import, μπορείτε να διαγράψετε με ασφάλεια οτιδήποτε συνδέεται με εκείνο το batch.

SQL Query για διαγραφή προϊόντων από συγκεκριμένο import

⚠️ Σημαντικό: Πάντα να δημιουργείτε ένα backup της βάσης δεδομένων πριν εκτελέσετε καταστροφικά queries.
Αντικαταστήστε το A9B2c1u_ με το δικό σας table prefix του WordPress και ορίστε το @IMPORT_ID.

🗃️
woocommerce-delete-products-by-import-id.sql

Copy to clipboard
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

-- Set your specific import ID here
SET @IMPORT_ID = 1;
-- 1) Collect ALL products & variations from this import
CREATE TEMPORARY TABLE to_del (id BIGINT PRIMARY KEY);
INSERT INTO to_del
SELECT p.ID
FROM A9B2c1u_posts p
JOIN A9B2c1u_pmxi_posts x ON x.post_id = p.ID
WHERE x.import_id = @IMPORT_ID
  AND p.post_type IN ('product','product_variation');
-- 2) (Optional but recommended) Delete related attachments
CREATE TEMPORARY TABLE to_del_att (id BIGINT PRIMARY KEY);
INSERT INTO to_del_att
SELECT a.ID
FROM A9B2c1u_posts a
WHERE a.post_type = 'attachment'
  AND a.post_parent IN (SELECT id FROM to_del);
DELETE pm FROM A9B2c1u_postmeta pm
JOIN to_del_att da ON pm.post_id = da.id;
DELETE tr FROM A9B2c1u_term_relationships tr
JOIN to_del_att da ON tr.object_id = da.id;
DELETE a FROM A9B2c1u_posts a
JOIN to_del_att da ON a.ID = da.id;
DROP TABLE to_del_att;
-- 3) Delete products/variations + all related records
DELETE pm FROM A9B2c1u_postmeta pm
JOIN to_del d ON pm.post_id = d.id;
DELETE tr FROM A9B2c1u_term_relationships tr
JOIN to_del d ON tr.object_id = d.id;
DELETE wcl FROM A9B2c1u_wc_product_meta_lookup wcl
JOIN to_del d ON wcl.product_id = d.id;
DELETE p FROM A9B2c1u_posts p
JOIN to_del d ON p.ID = d.id;
DELETE x FROM A9B2c1u_pmxi_posts x
JOIN to_del d ON x.post_id = d.id;
DROP TABLE to_del;

Πώς λειτουργεί αυτό το query

  1. Συλλέγει όλα τα προϊόντα και τις παραλλαγές που έχουν εισαχθεί με συγκεκριμένο import_id.

  2. Διαγράφει τα συνημμένα τους (εικόνες, αρχεία) ώστε η βάση δεδομένων να παραμένει καθαρή.

  3. Αφαιρεί όλα τα σχετικά δεδομένα, συμπεριλαμβανομένων:

    • Postmeta

    • Συσχετίσεων όρων (κατηγορίες, ετικέτες)

    • Καταχωρήσεων στους πίνακες product lookup

    • Αναφορών του WP All Import

  4. Τέλος, διαγράφει τα ίδια τα posts (product και product_variation).

Βέλτιστες πρακτικές

  • ✅ Πάντα να δοκιμάζετε σε staging πριν το τρέξετε σε production.

  • ✅ Ελέγξτε διπλά την τιμή του @IMPORT_ID.

  • ✅ Κάντε ένα πλήρες backup της βάσης πριν την εκτέλεση.

  • ✅ Τρέξτε τα queries μέσω phpMyAdmin ή WP-CLI με wp db query.

Σχετικά άρθρα