WooCommerce SQL Snippet

Διαγραφή προϊόντων WooCommerce ανά Import ID με WP All Import

Μάθετε πώς να διαγράφετε μαζικά προϊόντα WooCommerce που προήλθαν από συγκεκριμένη εισαγωγή του WP All Import, χρησιμοποιώντας ένα SQL query βάσει import_id.

WooCommerce WP All Import SQL Cleanup
Διαγραφή προϊόντων WooCommerce ανά Import ID με WP All Import

Τι κάνει αυτό το SQL query

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

Το query συγκεντρώνει τα προϊόντα και τις παραλλαγές της συγκεκριμένης εισαγωγής και στη συνέχεια διαγράφει τα σχετικά δεδομένα τους, όπως μεταδεδομένα, σχέσεις όρων, εγγραφές lookup και προαιρετικά τα συνδεδεμένα attachments.

Στοχευμένη διαγραφή Διαγράφει μόνο προϊόντα που συνδέονται με συγκεκριμένο WP All Import batch.
Καθαρό cleanup Αφαιρεί products, variations, postmeta, term relationships και lookup records.
Ιδανικό για feeds Χρήσιμο όταν θέλετε να αντικαταστήσετε πλήρως ένα product feed προμηθευτή.

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

Υπάρχουν αρκετές περιπτώσεις όπου η διαγραφή με βάση το import_id είναι πιο ασφαλής και πιο γρήγορη από τη χειροκίνητη διαγραφή προϊόντων.

  • Κάνατε δοκιμαστική εισαγωγή σε staging και θέλετε να την αναιρέσετε.
  • Κάνατε κατά λάθος εισαγωγή διπλότυπων προϊόντων.
  • Θέλετε να αντικαταστήσετε ολόκληρο το product feed ενός προμηθευτή.
  • Θέλετε να αφαιρέσετε μόνο τα προϊόντα ενός συγκεκριμένου import, χωρίς να επηρεάσετε άλλα προϊόντα.
Το WP All Import κρατάει σύνδεση ανάμεσα στα imported posts και το import που τα δημιούργησε, μέσω του πίνακα wp_pmxi_posts.

2) Πριν τρέξετε το query

Επειδή το query εκτελεί καταστροφική ενέργεια στη βάση δεδομένων, πρέπει να προηγηθεί έλεγχος.

  • Πάρτε πλήρες backup της βάσης δεδομένων.
  • Δοκιμάστε πρώτα σε staging περιβάλλον.
  • Επιβεβαιώστε το σωστό @IMPORT_ID.
  • Αντικαταστήστε το prefix A9B2c1u_ με το πραγματικό prefix της βάσης σας.
  • Μην το τρέξετε σε production αν δεν είστε σίγουροι για το αποτέλεσμα.
Για μεγαλύτερη ασφάλεια, μπορείτε πρώτα να τρέξετε μόνο το SELECT μέρος του query για να δείτε ποια IDs θα στοχευτούν.

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

Αντικαταστήστε το @IMPORT_ID με το ID της εισαγωγής που θέλετε να καθαρίσετε και το A9B2c1u_ με το πραγματικό table prefix του WordPress site σας.

woocommerce-delete-products-by-import-id.sql
-- 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 χρησιμοποιεί temporary tables, ώστε να κρατήσει σταθερή λίστα με τα IDs που πρέπει να διαγραφούν κατά τη διάρκεια της εκτέλεσης.

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

Ορίζει το Import ID Με το SET @IMPORT_ID = 1; δηλώνετε ποια εισαγωγή του WP All Import θέλετε να καθαρίσετε.
Συλλέγει προϊόντα και παραλλαγές Το query βρίσκει όλα τα posts τύπου product και product_variation που συνδέονται με το συγκεκριμένο import.
Διαγράφει σχετικά attachments Προαιρετικά αφαιρεί attachments που έχουν ως parent κάποιο από τα προϊόντα που διαγράφονται.
Καθαρίζει τα related records Αφαιρεί εγγραφές από postmeta, term_relationships και wc_product_meta_lookup.
Διαγράφει τα posts Στο τέλος διαγράφει τα ίδια τα προϊόντα και τις παραλλαγές από τον πίνακα posts.

5) Πώς να βρείτε το σωστό Import ID

Το import_id είναι το ID της εισαγωγής που έχει δημιουργηθεί από το WP All Import. Μπορείτε να το βρείτε από το WordPress admin ή απευθείας από τη βάση.

  • Ανοίξτε το WP All Import → Manage Imports και ελέγξτε το ID της εισαγωγής.
  • Εναλλακτικά, ελέγξτε τον πίνακα wp_pmxi_imports στη βάση δεδομένων.
  • Πριν τη διαγραφή, κάντε SELECT στο wp_pmxi_posts για να επιβεβαιώσετε ότι το import έχει τα σωστά προϊόντα.
preview-products-before-delete.sql
SET @IMPORT_ID = 1;

SELECT p.ID, p.post_title, p.post_type, p.post_status
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')
ORDER BY p.ID DESC;

6) Πού να το εκτελέσετε

Το query μπορεί να εκτελεστεί με διαφορετικούς τρόπους, ανάλογα με το επίπεδο πρόσβασης που έχετε.

  • phpMyAdmin: από την καρτέλα SQL της βάσης δεδομένων.
  • Adminer: αν χρησιμοποιείτε ελαφρύ database management tool.
  • WP-CLI: με wp db query, αν έχετε SSH πρόσβαση.
  • MySQL client: απευθείας από terminal, για πιο προχωρημένη διαχείριση.
Σε μεγάλα sites, προτιμήστε staging test και εκτέλεση σε χρονικό σημείο με χαμηλή επισκεψιμότητα.

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

  • Πάντα να δοκιμάζετε σε staging πριν το τρέξετε σε production.
  • Ελέγξτε διπλά την τιμή του @IMPORT_ID.
  • Κάντε ένα πλήρες backup της βάσης πριν την εκτέλεση.
  • Τρέξτε πρώτα SELECT query για να δείτε ποια προϊόντα θα διαγραφούν.
  • Ελέγξτε αν το table prefix είναι σωστό σε όλους τους πίνακες.
  • Μετά την εκτέλεση, καθαρίστε cache και κάντε έλεγχο στο WooCommerce product list.

8) Συχνές ερωτήσεις

Θα διαγραφούν όλα τα προϊόντα του WooCommerce;

Όχι. Το query στοχεύει μόνο τα προϊόντα και τις παραλλαγές που συνδέονται με το συγκεκριμένο import_id.

Πρέπει να αλλάξω το table prefix;

Ναι. Το παράδειγμα χρησιμοποιεί A9B2c1u_. Αν το δικό σας prefix είναι wp_, πρέπει να το αλλάξετε σε όλους τους πίνακες.

Διαγράφονται και οι παραλλαγές;

Ναι, το query στοχεύει τόσο product όσο και product_variation.

Διαγράφονται και οι εικόνες προϊόντων;

Το query περιλαμβάνει προαιρετικό βήμα για attachments που έχουν ως post_parent κάποιο από τα προϊόντα που διαγράφονται.

Μπορώ να το αναιρέσω μετά;

Όχι εύκολα. Για αυτό χρειάζεται πλήρες backup της βάσης πριν την εκτέλεση.

9) Υποστήριξη

Για οποιοδήποτε πρόβλημα ή απορία σχετικά με WooCommerce SQL snippets, μπορείτε να επικοινωνήσετε με την τεχνική υποστήριξη.

info@vgdevsolutions.gr

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