From 0b29232fe38e32124e0b52da0a69560bbf60d5c2 Mon Sep 17 00:00:00 2001 From: vedanshujain Date: Mon, 5 Oct 2020 14:05:13 +0530 Subject: [PATCH] Prime caches only when needed. --- .../class-wc-order-data-store-cpt.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/includes/data-stores/class-wc-order-data-store-cpt.php b/includes/data-stores/class-wc-order-data-store-cpt.php index 0b3bebd81d7..50854b44281 100644 --- a/includes/data-stores/class-wc-order-data-store-cpt.php +++ b/includes/data-stores/class-wc-order-data-store-cpt.php @@ -922,8 +922,10 @@ class WC_Order_Data_Store_CPT extends Abstract_WC_Order_Data_Store_CPT implement if ( ! isset( $query_vars['type'] ) || ! ( 'shop_order' === $query_vars['type'] ) ) { return; } - if ( isset( $query_vars['fields'] ) && is_array( $query_vars['fields'] ) && ! in_array( 'refunds', $query_vars['fields'] ) ) { - return; + if ( isset( $query_vars['fields'] ) && 'all' !== $query_vars['fields'] ) { + if ( is_array( $query_vars['fields'] ) && ! in_array( 'refunds', $query_vars['fields'] ) ) { + return; + } } $cache_keys_mapping = array(); foreach ( $order_ids as $order_id ) { @@ -978,18 +980,18 @@ class WC_Order_Data_Store_CPT extends Abstract_WC_Order_Data_Store_CPT implement */ private function prime_order_item_caches_for_orders( $order_ids, $query_vars ) { global $wpdb; - if ( isset( $query_vars['fields'] ) && is_array( $query_vars['fields'] ) ) { + if ( isset( $query_vars['fields'] ) && 'all' !== $query_vars['fields'] ) { $line_items = array( 'line_items', 'shipping_lines', 'fee_lines', 'coupon_lines', ); - if ( 0 > count( array_intersect( $line_items, $query_vars['fields'] ) ) ) { + + if ( is_array( $query_vars['fields'] ) && 0 === count( array_intersect( $line_items, $query_vars['fields'] ) ) ) { return; } } - $cache_keys = array_map( function ( $order_id ) { return 'order-items-' . $order_id; @@ -1045,6 +1047,13 @@ class WC_Order_Data_Store_CPT extends Abstract_WC_Order_Data_Store_CPT implement */ private function prime_raw_meta_cache_for_orders( $order_ids, $query_vars ) { global $wpdb; + + if ( isset( $query_vars['fields'] ) && 'all' !== $query_vars['fields'] ) { + if ( is_array( $query_vars['fields'] ) && ! in_array( 'meta_data', $query_vars['fields'] ) ) { + return; + } + } + $cache_keys_mapping = array(); foreach ( $order_ids as $order_id ) { $cache_keys_mapping[ $order_id ] = WC_Order::generate_meta_cache_key( $order_id, 'orders' );