WC_Post_Data::before_delete_order
Before deleting an order, do some cleanup.
Method of the class: WC_Post_Data{}
No Hooks.
Returns
null. Nothing (null).
Usage
$result = WC_Post_Data::before_delete_order( $order_id );
- $order_id(int) (required)
- Order ID.
Changelog
| Since 3.2.0 | Introduced. |
WC_Post_Data::before_delete_order() WC Post Data::before delete order code WC 10.6.2
public static function before_delete_order( $order_id ) {
if ( OrderUtil::is_order( $order_id, wc_get_order_types() ) ) {
// Clean up user.
$order = wc_get_order( $order_id );
// Check for `get_customer_id`, since this may be e.g. a refund order (which doesn't implement it).
$customer_id = is_callable( array( $order, 'get_customer_id' ) ) ? $order->get_customer_id() : 0;
if ( $customer_id > 0 && 'shop_order' === $order->get_type() ) {
$customer = new WC_Customer( $customer_id );
$order_count = $customer->get_order_count();
$order_count --;
if ( 0 === $order_count ) {
$customer->set_is_paying_customer( false );
$customer->save();
}
// Delete order count and last order meta.
delete_user_meta( $customer_id, '_order_count' );
delete_user_meta( $customer_id, '_last_order' );
}
// Clean up items.
self::delete_order_items( $order_id );
self::delete_order_downloadable_permissions( $order_id );
}
}