Automattic\WooCommerce\Internal\DataStores\Orders

OrdersTableDataStore::handle_order_deletion_with_sync_disabled()protectedWC 1.0

Handles the deletion of an order from the orders table when sync is disabled:

If the corresponding row in the posts table is of placeholder type, it's just deleted; otherwise a "deleted_from" record is created in the meta table and the sync process will detect these and take care of deleting the appropriate post records.

Method of the class: OrdersTableDataStore{}

No Hooks.

Return

null. Nothing (null).

Usage

// protected - for code of main (parent) or child class
$result = $this->handle_order_deletion_with_sync_disabled( $order_id ): void;
$order_id(int) (required)
Th id of the order that has been deleted from the orders table.

OrdersTableDataStore::handle_order_deletion_with_sync_disabled() code WC 9.3.3

protected function handle_order_deletion_with_sync_disabled( $order_id ): void {
	global $wpdb;

	$post_type = $wpdb->get_var(
		$wpdb->prepare( "SELECT post_type FROM {$wpdb->posts} WHERE ID=%d", $order_id )
	);

	if ( DataSynchronizer::PLACEHOLDER_ORDER_POST_TYPE === $post_type ) {
		$wpdb->query(
			$wpdb->prepare(
				"DELETE FROM {$wpdb->posts} WHERE ID=%d OR post_parent=%d",
				$order_id,
				$order_id
			)
		);
	} else {
		// phpcs:disable WordPress.DB.SlowDBQuery
		$wpdb->insert(
			self::get_meta_table_name(),
			array(
				'order_id'   => $order_id,
				'meta_key'   => DataSynchronizer::DELETED_RECORD_META_KEY,
				'meta_value' => DataSynchronizer::DELETED_FROM_ORDERS_META_VALUE,
			)
		);
		// phpcs:enable WordPress.DB.SlowDBQuery

		// Note that at this point upshift_or_delete_child_orders will already have been invoked,
		// thus all the child orders either still exist but have a different parent id,
		// or have been deleted and got their own deletion record already.
		// So there's no need to do anything about them.
	}
}