From 7c0273fa122f39f6b0d343847f0185e65a8a01e6 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 28 Jan 2019 15:00:48 +0000 Subject: [PATCH] Prime caches when reading variations --- ...class-wc-product-variable-data-store-cpt.php | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/includes/data-stores/class-wc-product-variable-data-store-cpt.php b/includes/data-stores/class-wc-product-variable-data-store-cpt.php index d9f32199f3c..342395c43ca 100644 --- a/includes/data-stores/class-wc-product-variable-data-store-cpt.php +++ b/includes/data-stores/class-wc-product-variable-data-store-cpt.php @@ -276,7 +276,13 @@ class WC_Product_Variable_Data_Store_CPT extends WC_Product_Data_Store_CPT imple 'regular_price' => array(), 'sale_price' => array(), ); - $variation_ids = $product->get_visible_children(); + + $variation_ids = $product->get_visible_children(); + + if ( is_callable( '_prime_post_caches' ) ) { + _prime_post_caches( $variation_ids ); + } + foreach ( $variation_ids as $variation_id ) { $variation = wc_get_product( $variation_id ); @@ -344,18 +350,19 @@ class WC_Product_Variable_Data_Store_CPT extends WC_Product_Data_Store_CPT imple } } - $prices_array['price'][ $variation_id ] = wc_format_decimal( $price, wc_get_price_decimals() ); + $prices_array['price'][ $variation_id ] = wc_format_decimal( $price, wc_get_price_decimals() ); $prices_array['regular_price'][ $variation_id ] = wc_format_decimal( $regular_price, wc_get_price_decimals() ); $prices_array['sale_price'][ $variation_id ] = wc_format_decimal( $sale_price . '.00', wc_get_price_decimals() ); + $prices_array = apply_filters( 'woocommerce_variation_prices_array', $prices_array, $variation, $for_display ); } - } + } // Add all pricing data to the transient array. - foreach( $prices_array as $key => $values ) { + foreach ( $prices_array as $key => $values ) { $transient_cached_prices_array[ $price_hash ][ $key ] = $values; } - + set_transient( $transient_name, wp_json_encode( $transient_cached_prices_array ), DAY_IN_SECONDS * 30 ); }