WC_Abstract_Order::delete_items_by_ids │ private │ WC 1.0

Deletes items in bulk if the data store supports it, otherwise deletes them one by one.

Method of the class: WC_Abstract_Order{}

No Hooks.

Returns

void. Nothing (null).

Usage

// private - for code of main (parent) class only
$result = $this->delete_items_by_ids( $item_ids ): void;
$item_ids(array) (required)
IDs of the items to delete.

WC_Abstract_Order::delete_items_by_ids() code WC 11.1.2

private function delete_items_by_ids( array $item_ids ): void {
	/**
	 * Data store wrapper.
	 *
	 * @var WC_Data_Store $data_store
	 */
	$data_store = $this->data_store;

	if ( $data_store->has_callable( 'delete_items_by_ids' ) ) {
		// @phpstan-ignore-next-line -- Optional data store method checked above.
		$data_store->delete_items_by_ids( $this, $item_ids );
	} else {
		// Custom data stores may not support bulk deletion by IDs, so delete the snapshotted items individually
		// so that items added *after* remove_order_items() are preserved.
		foreach ( array_unique( $item_ids ) as $item_id ) {
			$item = WC_Order_Factory::get_order_item( $item_id );

			if ( $item && $this->get_id() === $item->get_order_id() ) {
				$item->delete();
			}
		}
	}
}