Orders in bulk verwijderen (WooCommerce): verschil tussen versies
(Nieuwe pagina aangemaakt met '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...') |
|||
(11 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
Regel 1: | Regel 1: | ||
− | + | == WP-CLI == | |
− | == Verplaats alle orders naar trash == | + | Met succes toegepast (23 sep. 2020 - ontwikkelomgeving - Ca. 2 tot 5 orders per seconde, dus het kost tijd) [https://wordpress.org/support/topic/tip-how-to-delete-all-your-orders-and-save-you-time/]: |
+ | |||
+ | <pre> | ||
+ | wp post delete $(wp post list --field=ID --post_type="shop_order") --force | ||
+ | </pre> | ||
+ | |||
+ | Details: | ||
+ | |||
+ | Het commando | ||
+ | |||
+ | <pre> | ||
+ | wp post list --post_type="shop_order" | ||
+ | </pre> | ||
+ | toont een tabel met allerlei info van alle posts van het type ''shop_order''. | ||
+ | |||
+ | Het commando | ||
+ | |||
+ | <pre> | ||
+ | wp post list --field=ID --post_type="shop_order" | ||
+ | </pre> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | == SQL == | ||
+ | |||
+ | Waarom dit in SQL doen? | ||
+ | |||
+ | * Omdat ik soms alleen toegang heb tot de database, zonder een bijbehorende WordPress-installatie | ||
+ | * Omdat de WP-CLI niet altijd beschikbaar is, of functioneert | ||
+ | * Omdat het kan. | ||
+ | |||
+ | Is dit wel betrouwbaar? Blijft er geen data achter, bv. in tabel <code>w_woocommerce_order_items</code>? | ||
+ | |||
+ | === Verplaats alle orders naar trash === | ||
<pre> | <pre> | ||
Regel 11: | Regel 46: | ||
<pre> | <pre> | ||
UPDATE wp_posts SET post_status = 'trash' WHERE post_type = 'shop_order' and post_status="wc-completed"; | UPDATE wp_posts SET post_status = 'trash' WHERE post_type = 'shop_order' and post_status="wc-completed"; | ||
− | <pre> | + | </pre> |
− | == Leeg trash == | + | === Leeg trash === |
Legen van ''trash'' als daar veel items in zitten, kan ook problematisch zijn. Gelukkig is ook dat te automatiseren: | Legen van ''trash'' als daar veel items in zitten, kan ook problematisch zijn. Gelukkig is ook dat te automatiseren: | ||
Regel 24: | Regel 59: | ||
Toch heb ik m'n twijfels of deze methode wel ok is, zo zonder de WC-API te gebruiken. | Toch heb ik m'n twijfels of deze methode wel ok is, zo zonder de WC-API te gebruiken. | ||
+ | |||
+ | === In één keer === | ||
+ | |||
+ | Orderregels e.d. moet je apart verwijderen: Dat gaat niet via ''cascaded deletion'': | ||
+ | |||
+ | <pre> | ||
+ | delete from wp_posts where post_type = 'shop_order'; | ||
+ | delete from wp_woocommerce_order_items; | ||
+ | delete from wp_woocommerce_order_itemmeta; | ||
+ | delete from wp_wc_order_stats; | ||
+ | </pre> | ||
+ | |||
+ | == Bronnen == | ||
+ | |||
+ | * https://stackoverflow.com/questions/24904413/how-to-delete-completed-orders-in-woocommerce-using-a-my-sql-query | ||
+ | * https://wordpress.org/support/topic/tip-how-to-delete-all-your-orders-and-save-you-time/ |
Huidige versie van 25 mei 2022 om 18:38
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
Waarom dit in SQL doen?
- Omdat ik soms alleen toegang heb tot de database, zonder een bijbehorende WordPress-installatie
- Omdat de WP-CLI niet altijd beschikbaar is, of functioneert
- Omdat het kan.
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.
In één keer
Orderregels e.d. moet je apart verwijderen: Dat gaat niet via cascaded deletion:
delete from wp_posts where post_type = 'shop_order'; delete from wp_woocommerce_order_items; delete from wp_woocommerce_order_itemmeta; delete from wp_wc_order_stats;