WC_Order_Factory::get_orders()
Get multiple orders (by ID).
Method of the class: WC_Order_Factory{}
No Hooks.
Return
Array[\WC_Order]
.
Usage
$result = WC_Order_Factory::get_orders( $order_ids, $skip_invalid );
- $order_ids(array[mixed])
- Array of order IDs to get.
Default: array() - $skip_invalid(true|false)
- -
Default: false) TRUE if invalid IDs or orders should be ignored
WC_Order_Factory::get_orders() WC Order Factory::get orders code WC 9.7.1
public static function get_orders( $order_ids = array(), $skip_invalid = false ) { if ( empty( $order_ids ) ) { return array(); } $result = array(); $order_ids = array_filter( array_map( array( __CLASS__, 'get_order_id' ), $order_ids ) ); $original_order_sort = $order_ids; $order_cache = wc_get_container()->get( OrderCache::class ); $already_cached_orders = array(); $use_orders_cache = OrderUtil::orders_cache_usage_is_enabled(); if ( $use_orders_cache ) { $uncached_order_ids = array(); foreach ( $order_ids as $order_id ) { $cached_order = $order_cache->get( absint( $order_id ) ); if ( $cached_order instanceof \WC_Abstract_Legacy_Order ) { $already_cached_orders[ $order_id ] = $cached_order; } else { $uncached_order_ids[] = $order_id; } } $order_ids = $uncached_order_ids; } // We separate order list by class, since their datastore might be different. $order_list_by_class = array(); $order_id_classnames = self::get_class_names_for_order_ids( $order_ids ); foreach ( $order_id_classnames as $order_id => $classname ) { if ( ! $classname && ! $skip_invalid ) { // translators: %d is an order ID. throw new \Exception( sprintf( __( 'Could not find classname for order ID %d', 'woocommerce' ), $order_id ) ); } if ( ! isset( $order_list_by_class[ $classname ] ) ) { $order_list_by_class[ $classname ] = array(); } try { $obj = new $classname(); $obj->set_defaults(); $obj->set_id( $order_id ); $order_list_by_class[ $classname ][ $order_id ] = $obj; } catch ( \Exception $e ) { wc_caught_exception( $e, __FUNCTION__, array( $order_id ) ); if ( ! $skip_invalid ) { throw $e; } } } foreach ( $order_list_by_class as $classname => $order_list ) { $data_store = ( new $classname() )->get_data_store(); try { $data_store->read_multiple( $order_list ); } catch ( \Exception $e ) { wc_caught_exception( $e, __FUNCTION__, $order_ids ); if ( ! $skip_invalid ) { throw $e; } } foreach ( $order_list as $order ) { $result[ $order->get_id() ] = $order; } } if ( $use_orders_cache ) { foreach ( $result as $order_id => $order ) { $order_cache->set( $order, $order->get_id() ); } $result = array_replace( $result, $already_cached_orders ); } // restore the sort order. $result = array_values( array_replace( array_flip( $original_order_sort ), $result ) ); return $result; }