Schreiben Sie eine SQL-Abfrage, um alte Bestellungen in Woocommerce zu entfernen

Lesezeit: 3 Minuten

Schreiben Sie eine SQL Abfrage um alte Bestellungen in Woocommerce zu
Stachelrochen

Ich möchte einige ALTE Bestelldaten in Woocommerce entfernen und nur die Bestelldaten der letzten 12 Monate behalten

Dies ist die SQL-Abfrage, die ich verwende, um ALLE Bestellungen zu entfernen:

DELETE FROM wp_woocommerce_order_itemmeta
DELETE FROM wp_woocommerce_order_items
DELETE FROM wp_comments WHERE comment_type="order_note"
DELETE FROM wp_postmeta WHERE post_id IN ( SELECT ID FROM wp_posts WHERE post_type="shop_order" )
DELETE FROM wp_posts WHERE post_type="shop_order"

Was muss ich hinzufügen, um alle Bestelldaten VOR dem 1. Januar 2017 zu ENTFERNEN und Bestelldaten seit dem 1. Januar 2017 ZU BEHALTEN?

Ich weiß nicht so viel über SQL, da ich im Laufe der Jahre einige SQL-Abfragen verwendet habe.

Jede Hilfe ist willkommen.

Ich bin erstaunt, dass es dafür noch kein Plugin gibt und auch Kunden ohne Bestellungen zu entfernen. Ich bezweifle, dass ich der Einzige bin, der versucht, ihre WP/WC-Datenbank sauber zu halten.

1647319745 287 Schreiben Sie eine SQL Abfrage um alte Bestellungen in Woocommerce zu
Andreas Schulz

Dies ist die allgemeine Idee, Sie löschen zuerst die untergeordneten Elemente und entfernen dann zuletzt die übergeordneten Elemente. FÜHREN SIE DIES NICHT AUS, OHNE ZUERST ZU TESTEN. Ich übernehme keine Verantwortung für verlorene Daten.

DELETE 
FROM    wp_woocommerce_order_itemmeta 
WHERE   order_item_id IN (
    SELECT  order_item_id
    FROM    wp_woocommerce_order_items
    WHERE   order_id IN (
        SELECT  ID 
        FROM    wp_posts
        WHERE   post_date < '2017-01-01'
    )
)

DELETE 
FROM    wp_woocommerce_order_items
WHERE   order_id IN (
    SELECT  ID 
    FROM    wp_posts
    WHERE   post_date <= '2017-01-01'
)

DELETE 
FROM    wp_comments 
WHERE   comment_type="order_note"
AND     comment_post_ID IN (
    SELECT  ID 
        FROM    wp_posts
        WHERE   post_date <= '2017-01-01'
)

DELETE 
FROM    wp_postmeta 
WHERE   post_id IN ( 
    SELECT  ID 
    FROM    wp_posts 
    WHERE   post_type="shop_order"
    AND     post_date <= '2017-01-01' 
)

DELETE 
FROM    wp_posts 
WHERE   post_type="shop_order"
AND     post_date <= '2017-01-01'

  • Vielen Dank, es funktioniert wirklich und funktioniert schneller als die manuelle Reinigung im Admin-Panel.

    – Bogdan

    13. November 2018 um 9:14 Uhr

  • Erzählen Sie mir davon, meine Website würde immer eine Zeitüberschreitung aufweisen, wenn sie versuchte, dies über das Frontend zu tun. Spart Ihnen Stunden der Frustration!

    – Andreas Schultz

    13. November 2018 um 10:01 Uhr

  • Funktioniert super und so schnell. Hatte 70.000 Bestellungen im Backend und eine ernsthafte Verlangsamung beim Filtern durch sie. Viel besser jetzt. Führen Sie jedes einzeln aus und sichern Sie zuerst.

    – Dekan Wilson

    1. Juni 2020 um 0:13 Uhr


  • Sollte dies auch Kommentarmeta abdecken? dh, DELETE FROM wp_commentmeta WHERE comment_id NOT IN ( SELECT comment_id FROM wp_comments );

    – BlueDogRanch

    11. November 2020 um 22:32 Uhr

  • @BlueDogRanch ja, das sollte es, Sie können den Code gerne ändern und hinzufügen 🙂

    – Andreas Schultz

    12. November 2020 um 5:21 Uhr

Schreiben Sie eine SQL Abfrage um alte Bestellungen in Woocommerce zu
Pankaj Kumar

Wenn in diesen Tabellen Fremdschlüssel implementiert wurden, müssen Sie erst dann Daten aus der untergeordneten Tabelle löschen, wenn Sie Daten aus der übergeordneten Tabelle löschen können.

Die SQL-Abfrage sieht wie folgt aus:

DELETE FROM wp_woocommerce_order_itemmeta
where Date(OrderDate Column) < '2017-01-01';

DELETE FROM wp_posts
WHERE post_type="shop_order" 
and Date(OrderDate Column) < '2017-01-01';

1003970cookie-checkSchreiben Sie eine SQL-Abfrage, um alte Bestellungen in Woocommerce zu entfernen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy