Orders in bulk verwijderen (WooCommerce): verschil tussen versies
(→WP-CLI) |
(→WP-CLI) |
||
Regel 26: | Regel 26: | ||
toont alleen de ID's. Deze ID's worden vervolgens als input gebruikt voor het commando <code>wp post delete</code>. | toont alleen de ID's. Deze ID's worden vervolgens als input gebruikt voor het commando <code>wp post delete</code>. | ||
− | De ''flag <code>--force</code> zorgt ervoor, dat deze orders rechtstreeks verwijderd worden, en niet in de prullenbak belanden. | + | De ''flag'' <code>--force</code> zorgt ervoor, dat deze orders rechtstreeks verwijderd worden, en niet in de prullenbak belanden. |
== SQL == | == SQL == |
Versie van 23 sep 2020 16:58
WordPress lijkt niet te zijn gebouwd om via de interface duizenden orders te verwijderen. Gelukkig kan dit gemakkelijk in SQL, en naar het zich laat aanzien, op een veilige manier:
WP-CLI
Met succes toegepast (23 sep. 2020 - ontwikkelomgeving - Ca. 2 tot 5 orders per seconde, dus het kost tijd) [1]:
wp post delete $(wp post list --field=ID --post_type="shop_order") --force
Details:
Het commando
wp post list --post_type="shop_order"
toont een tabel met allerlei info van alle posts van het type shop_order.
Het commando
wp post list --field=ID --post_type="shop_order"
toont alleen de ID's. Deze ID's worden vervolgens als input gebruikt voor het commando wp post delete
.
De flag --force
zorgt ervoor, dat deze orders rechtstreeks verwijderd worden, en niet in de prullenbak belanden.
SQL
Is dit wel betrouwbaar? Blijft er geen data achter, bv. in tabel w_woocommerce_order_items
?
Verplaats alle orders naar trash
UPDATE wp_posts SET post_status = 'trash' WHERE post_type = 'shop_order';
of
UPDATE wp_posts SET post_status = 'trash' WHERE post_type = 'shop_order' and post_status="wc-completed";
Leeg trash
Legen van trash als daar veel items in zitten, kan ook problematisch zijn. Gelukkig is ook dat te automatiseren:
DELETE FROM wp_posts WHERE post_type = 'shop_order' AND post_status = ‘trash’
Toch heb ik m'n twijfels of deze methode wel ok is, zo zonder de WC-API te gebruiken.