Sh3ll
OdayForums


Server : LiteSpeed
System : Linux premium84.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User : claqxcrl ( 523)
PHP Version : 8.1.32
Disable Function : NONE
Directory :  /home/claqxcrl/anfangola.com/wp-content/plugins/wp-smushit/core/integrations/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/claqxcrl/anfangola.com/wp-content/plugins/wp-smushit/core/integrations/class-woocommerce.php
<?php

namespace Smush\Core\Integrations;

use Smush\Core\Controller;
use Smush\Core\Transform\Transformer;
use Smush\Core\Settings;

class WooCommerce extends Controller {
	public function __construct() {
		$this->register_filter( 'wp_smush_transform_rest_response_item', array(
			$this,
			'transform_rest_woo_product',
		), 10, 3 );

		$this->register_filter( 'wp_smush_get_image_attribute_names', array( $this, 'allow_woo_image_attributes_to_convert' ) );

		// WooCommerce's product gallery thumbnail CDN support.
		$this->register_filter( 'woocommerce_single_product_image_thumbnail_html', array( $this, 'maybe_native_lazyload_woo_product_gallery' ) );

		$this->register_filter( 'wp_smush_should_skip_auto_smush', array( $this, 'maybe_skip_auto_smush' ) );
	}

	public function should_run() {
		return function_exists( 'is_woocommerce' )
		       && class_exists( 'WooCommerce' );
	}

	/**
	 * @param $item array
	 * @param $request \WP_REST_Request
	 * @param $transformer Transformer
	 *
	 * @return array
	 */
	public function transform_rest_woo_product( $item, $request, $transformer ) {
		if ( ! str_starts_with( $request->get_route(), '/wc/v3/products' ) ) {
			return $item;
		}

		$product_url = empty( $item['permalink'] ) ? '' : $item['permalink'];
		if ( ! empty( $item['description'] ) ) {
			$item['description'] = $transformer->transform_content( $item['description'], $product_url );
		}

		if ( ! empty( $item['short_description'] ) ) {
			$item['short_description'] = $transformer->transform_content( $item['short_description'], $product_url );
		}

		$images = empty( $item['images'] ) ? array() : $item['images'];
		foreach ( $images as $index => $image ) {
			if ( ! empty( $image['src'] ) ) {
				$item['images'][ $index ]['src'] = $transformer->transform_url( $image['src'] );
			}
		}

		return $item;
	}

	public function allow_woo_image_attributes_to_convert( $attribute_names ) {
		$attribute_names[] = 'data-large_image';
		return $attribute_names;
	}

	public function maybe_native_lazyload_woo_product_gallery( $thumbnail_html ) {
		if ( ! Settings::get_instance()->is_lazyload_active() || strpos( $thumbnail_html, ' loading=' ) ) {
			return $thumbnail_html;
		}

		// Woocommerce product gallery used `data-src` attribute which we excluded by default from lazyload
		// so we will always use native lazyload for it.
		$thumbnail_html = str_replace( '<img ', '<img loading="lazy" ', $thumbnail_html );

		return $thumbnail_html;
	}

	public function maybe_skip_auto_smush( $skip_auto_smush ) {
		if ( $skip_auto_smush ) {
			return true;
		}

		// Skip auto Smush when woocommerce regenrate thumbnails via filter wp_get_attachment_image_src.
		$skip_auto_smush = doing_filter( 'wp_get_attachment_image_src' );

		return $skip_auto_smush;
	}
}

ZeroDay Forums Mini