diff --git a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php index f2543f037f6..ace23ce36e9 100644 --- a/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php +++ b/plugins/woocommerce/src/Internal/DataStores/Orders/OrdersTableDataStore.php @@ -1766,7 +1766,9 @@ FROM $order_meta_table */ do_action( 'woocommerce_before_delete_order', $order_id, $order ); + $this->unlink_child_orders( $order ); $this->delete_order_data_from_custom_order_tables( $order_id ); + $order->set_id( 0 ); // If this datastore method is called while the posts table is authoritative, refrain from deleting post data. @@ -1796,6 +1798,19 @@ FROM $order_meta_table } } + private function unlink_child_orders( $order ) { + global $wpdb; + $order_table = self::get_orders_table_name(); + $order_parent = $order->get_parent_id(); + $wpdb->update( + $order_table, + array( 'parent_order_id' => $order_parent ), + array( 'parent_order_id' => $order->get_id() ), + array( '%d' ), + array( '%d' ) + ); + } + /** * Trashes an order. *