Verwijderen van grote hoeveelheden oude orders uit Woocommerce

Het beheren van de database is een essentieel onderdeel van het onderhouden van een WooCommerce-website. Soms kan het nodig zijn om bestellingen te verwijderen, bijvoorbeeld als onderdeel van databaseonderhoud of het verwijderen van oude gegevens. Zo hadden wij recent een klant met ruim 800.000 bestellingen in Woocommerce. De hoeveelheid bestellingen zorgde ervoor dat de gehele WordPress backend traag was. Vreemd genoeg kijkt Wooocommerce ook naar de order tabel bij het openen van een productpagina. Het was dus zaak hier met de bezem doorheen te gaan.

In deze blogpost bespreken we hoe je met MySQL queries (in bijv. Phpmyadmin) een reeks bestellingen van een bepaalde datumreeks kunt verwijderen uit WooCommerce.

Stap 1: Verwijderen van Order Items

De eerste stap in dit proces is het verwijderen van de order items. Dit doe je met de volgende query:

DELETE FROM wp_woocommerce_order_items WHERE order_id IN (
SELECT ID FROM wp_posts WHERE post_date <= ‘2023-03-31
)

Deze query selecteert en verwijdert alle order items die gekoppeld zijn aan bestellingen van vóór 31 maart 2023. Je kunt dit zelf natuurlijk aanpassen naar een andere datum. Het is belangrijk om te beginnen met het verwijderen van deze gerelateerde items voordat je de hoofdbestellingen zelf verwijdert.

Stap 2: Verwijderen van Gerelateerde Commentaren

De tweede stap is het verwijderen van alle gerelateerde commentaren. Dit doe je met de volgende query:

DELETE FROM wp_comments WHERE comment_type = ‘order_note’ AND comment_post_ID IN (
SELECT ID FROM wp_posts WHERE post_date <= ‘2023-03-31
)

Deze query verwijdert alle commentaren die gekoppeld zijn aan de bestellingen. Dit omvat order notities die belangrijk kunnen zijn voor de administratie, maar niet meer nodig zijn voor bestellingen die worden verwijderd.

Stap 3: Verwijderen van Postmeta

De derde stap is het verwijderen van postmeta gegevens gekoppeld aan de bestellingen. De query ziet er als volgt uit:

DELETE FROM wp_posts WHERE post_type = ‘shop_order’ AND post_date <= ‘2023-03-31‘;

Deze stap zorgt ervoor dat alle meta-informatie die gerelateerd is aan de bestellingen die worden verwijderd, ook wordt opgeruimd.

Stap 4: Verwijderen van de Bestellingen Zelf

Tot slot, de laatste stap is het verwijderen van de bestellingen zelf:

DELETE FROM wp_posts WHERE post_type = ‘shop_order’ AND post_date <= ‘2023-03-31‘;

Deze query verwijdert alle bestellingen die vallen vóór de opgegeven datum. Het is cruciaal dat deze stap als laatste wordt uitgevoerd, omdat de eerdere stappen afhankelijk zijn van de informatie in de wp_posts tabel.

Belangrijke Overwegingen

  • Back-up: Voordat je begint, zorg ervoor dat je een volledige back-up van je database hebt. Het verwijderen van data uit de database is permanent en kan niet ongedaan worden gemaakt.
  • Testen: Test deze queries eerst op een staging omgeving voordat je ze uitvoert op je live website.
  • WooCommerce Versie: Controleer of je WooCommerce versie compatibel is met deze queries, aangezien database structuren kunnen veranderen met updates.

Het uitvoeren van deze stappen zal helpen om je WooCommerce database schoon en efficiënt te houden, vooral als je werkt met grote hoeveelheden data en bestellingen.

Geplaatst in de categorie: Blog