Διαγραφή προϊόντων WooCommerce ανά Import ID με WP All Import
Μάθετε πώς να διαγράφετε μαζικά προϊόντα WooCommerce που προήλθαν από συγκεκριμένη εισαγωγή
του WP All Import, χρησιμοποιώντας ένα SQL query βάσει import_id.
Τι κάνει αυτό το SQL query
Η διαχείριση χιλιάδων προϊόντων στο WooCommerce συχνά απαιτεί μαζικές εισαγωγές με το
WP All Import. Αν χρειαστεί να διαγράψετε όλα τα προϊόντα που προήλθαν
από μία συγκεκριμένη εισαγωγή, μπορείτε να στοχεύσετε το αντίστοιχο import_id.
Το query συγκεντρώνει τα προϊόντα και τις παραλλαγές της συγκεκριμένης εισαγωγής και στη συνέχεια διαγράφει τα σχετικά δεδομένα τους, όπως μεταδεδομένα, σχέσεις όρων, εγγραφές lookup και προαιρετικά τα συνδεδεμένα attachments.
1) Γιατί να διαγράψετε προϊόντα βάσει Import ID;
Υπάρχουν αρκετές περιπτώσεις όπου η διαγραφή με βάση το import_id είναι πιο ασφαλής
και πιο γρήγορη από τη χειροκίνητη διαγραφή προϊόντων.
- Κάνατε δοκιμαστική εισαγωγή σε staging και θέλετε να την αναιρέσετε.
- Κάνατε κατά λάθος εισαγωγή διπλότυπων προϊόντων.
- Θέλετε να αντικαταστήσετε ολόκληρο το product feed ενός προμηθευτή.
- Θέλετε να αφαιρέσετε μόνο τα προϊόντα ενός συγκεκριμένου import, χωρίς να επηρεάσετε άλλα προϊόντα.
wp_pmxi_posts.
2) Πριν τρέξετε το query
Επειδή το query εκτελεί καταστροφική ενέργεια στη βάση δεδομένων, πρέπει να προηγηθεί έλεγχος.
- Πάρτε πλήρες backup της βάσης δεδομένων.
- Δοκιμάστε πρώτα σε staging περιβάλλον.
- Επιβεβαιώστε το σωστό
@IMPORT_ID. - Αντικαταστήστε το prefix
A9B2c1u_με το πραγματικό prefix της βάσης σας. - Μην το τρέξετε σε production αν δεν είστε σίγουροι για το αποτέλεσμα.
3) SQL Query για διαγραφή προϊόντων από συγκεκριμένο import
Αντικαταστήστε το @IMPORT_ID με το ID της εισαγωγής που θέλετε να καθαρίσετε
και το A9B2c1u_ με το πραγματικό table prefix του WordPress site σας.
-- 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;
4) Πώς λειτουργεί αυτό το query
SET @IMPORT_ID = 1; δηλώνετε ποια εισαγωγή του WP All Import θέλετε να καθαρίσετε.
product και product_variation που συνδέονται με το συγκεκριμένο import.
postmeta, term_relationships και wc_product_meta_lookup.
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 έχει τα σωστά προϊόντα.
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, για πιο προχωρημένη διαχείριση.
7) Βέλτιστες πρακτικές
- Πάντα να δοκιμάζετε σε staging πριν το τρέξετε σε production.
- Ελέγξτε διπλά την τιμή του
@IMPORT_ID. - Κάντε ένα πλήρες backup της βάσης πριν την εκτέλεση.
- Τρέξτε πρώτα SELECT query για να δείτε ποια προϊόντα θα διαγραφούν.
- Ελέγξτε αν το table prefix είναι σωστό σε όλους τους πίνακες.
- Μετά την εκτέλεση, καθαρίστε cache και κάντε έλεγχο στο WooCommerce product list.
8) Συχνές ερωτήσεις
Όχι. Το query στοχεύει μόνο τα προϊόντα και τις παραλλαγές που συνδέονται με το συγκεκριμένο import_id.
Ναι. Το παράδειγμα χρησιμοποιεί A9B2c1u_. Αν το δικό σας prefix είναι wp_,
πρέπει να το αλλάξετε σε όλους τους πίνακες.
Ναι, το query στοχεύει τόσο product όσο και product_variation.
Το query περιλαμβάνει προαιρετικό βήμα για attachments που έχουν ως post_parent
κάποιο από τα προϊόντα που διαγράφονται.
Όχι εύκολα. Για αυτό χρειάζεται πλήρες backup της βάσης πριν την εκτέλεση.
9) Υποστήριξη
Για οποιοδήποτε πρόβλημα ή απορία σχετικά με WooCommerce SQL snippets, μπορείτε να επικοινωνήσετε με την τεχνική υποστήριξη.