From 674c8aa19f4f4e44a2f3131976926ee8ae7edd99 Mon Sep 17 00:00:00 2001 From: girishpanchal30 <girish@krishaweb.com> Date: Fri, 7 Mar 2025 12:12:51 +0530 Subject: [PATCH] fix: display optimized images in cart and minicart --- inc/compatibilities/woocommerce.php | 30 +++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/inc/compatibilities/woocommerce.php b/inc/compatibilities/woocommerce.php index ff9e70bf..a5984e39 100644 --- a/inc/compatibilities/woocommerce.php +++ b/inc/compatibilities/woocommerce.php @@ -22,9 +22,11 @@ public function should_load() { * Register integration details. */ public function register() { - if ( Optml_Main::instance()->admin->settings->use_lazyload() ) { + if ( Optml_Main::instance()->admin->settings->is_offload_enabled() && Optml_Main::instance()->admin->settings->use_lazyload() ) { add_filter( 'optml_lazyload_early_flags', [ $this, 'add_lazyload_early_flag' ], PHP_INT_MAX, 1 ); } + add_filter( 'woocommerce_cart_item_thumbnail', [ Optml_Main::instance()->manager, 'replace_content' ] ); + add_filter( 'woocommerce_store_api_cart_item_images', [ $this, 'replace_store_api_cart_item_images' ] ); } /** * Add ignore lazyload flag. @@ -72,9 +74,29 @@ public function add_product_pages_to_image_query( $parents = [ 0 ] ) { * @return bool Whether to load the compatibility or not. */ public function should_load_early() { - if ( Optml_Main::instance()->admin->settings->get( 'offload_media' ) === 'enabled' ) { - return true; + return true; + } + + /** + * Filter cart item images url. + * + * @param array $product_images Product images. + * + * @return array Filtered images. + */ + public function replace_store_api_cart_item_images( $product_images ) { + if ( empty( $product_images ) ) { + return $product_images; } - return false; + do_action( 'optml_replacer_setup' ); + $product_images = array_map( + function ( $product_image ) { + $product_image->thumbnail = Optml_Main::instance()->manager->url_replacer->build_url( $product_image->thumbnail ); + $product_image->src = $product_image->thumbnail; + return $product_image; + }, + $product_images + ); + return $product_images; } }