GRAYBYTE WORDPRESS FILE MANAGER6042

Server IP : 68.65.123.43 / Your IP : 216.73.216.162
System : Linux server266.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64
PHP Version : 8.0.30
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /home/inteuuod/public_html/wp-content/plugins/woocommerce/includes/
Upload Files :
Current_dir [ Writeable ] Document_root [ Writeable ]

Command :


Current File : /home/inteuuod/public_html/wp-content/plugins/woocommerce/includes//class-wc-regenerate-images.php
<?php
/**
 * Regenerate Images Functionality
 *
 * All functionality pertaining to regenerating product images in realtime.
 *
 * @package WooCommerce\Classes
 * @version 3.5.0
 * @since   3.3.0
 */

defined( 'ABSPATH' ) || exit;

/**
 * Regenerate Images Class
 */
class WC_Regenerate_Images {

	/**
	 * Background process to regenerate all images
	 *
	 * @var WC_Regenerate_Images_Request
	 */
	protected static $background_process;

	/**
	 * Stores size being generated on the fly.
	 *
	 * @var string
	 */
	protected static $regenerate_size;

	/**
	 * Init function
	 */
	public static function init() {
		add_action( 'image_get_intermediate_size', array( __CLASS__, 'filter_image_get_intermediate_size' ), 10, 3 );
		add_filter( 'wp_generate_attachment_metadata', array( __CLASS__, 'add_uncropped_metadata' ) );
		add_filter( 'wp_get_attachment_image_src', array( __CLASS__, 'maybe_resize_image' ), 10, 4 );

		// Not required when Jetpack Photon is in use.
		if ( method_exists( 'Jetpack', 'is_module_active' ) && Jetpack::is_module_active( 'photon' ) ) {
			return;
		}

		if ( apply_filters( 'woocommerce_background_image_regeneration', true ) ) {
			include_once WC_ABSPATH . 'includes/class-wc-regenerate-images-request.php';

			self::$background_process = new WC_Regenerate_Images_Request();

			add_action( 'admin_init', array( __CLASS__, 'regenerating_notice' ) );
			add_action( 'woocommerce_hide_regenerating_thumbnails_notice', array( __CLASS__, 'dismiss_regenerating_notice' ) );

			// Regenerate thumbnails in the background after settings changes. Not ran on multisite to avoid multiple simultaneous jobs.
			if ( ! is_multisite() ) {
				add_action( 'customize_save_after', array( __CLASS__, 'maybe_regenerate_images' ) );
				add_action( 'after_switch_theme', array( __CLASS__, 'maybe_regenerate_images' ) );
			}
		}
	}

	/**
	 * If an intermediate size meta differs from the actual image size (settings were changed?) return false so the wrong size is not used.
	 *
	 * @param array  $data Size data.
	 * @param int    $attachment_id Attachment ID.
	 * @param string $size Size name.
	 * @return array
	 */
	public static function filter_image_get_intermediate_size( $data, $attachment_id, $size ) {
		if ( ! is_string( $size ) || ! in_array( $size, apply_filters( 'woocommerce_image_sizes_to_resize', array( 'woocommerce_thumbnail', 'woocommerce_gallery_thumbnail', 'woocommerce_single' ) ), true ) ) {
			return $data;
		}

		// If we don't have sizes, we cannot proceed.
		if ( ! isset( $data['width'], $data['height'] ) ) {
			return $data;
		}

		// See if the image size has changed from our settings.
		if ( ! self::image_size_matches_settings( $data, $size ) ) {
			// If Photon is running we can just return false and let Jetpack handle regeneration.
			if ( method_exists( 'Jetpack', 'is_module_active' ) && Jetpack::is_module_active( 'photon' ) ) {
				return false;
			} else {
				// If we get here, Jetpack is not running and we don't have the correct image sized stored. Try to return closest match.
				$size_data = wc_get_image_size( $size );
				return image_get_intermediate_size( $attachment_id, array( absint( $size_data['width'] ), absint( $size_data['height'] ) ) );
			}
		}
		return $data;
	}

	/**
	 * We need to track if uncropped was on or off when generating the images.
	 *
	 * @param array $meta_data Array of meta data.
	 * @return array
	 */
	public static function add_uncropped_metadata( $meta_data ) {
		$size_data = wc_get_image_size( 'woocommerce_thumbnail' );
		if ( isset( $meta_data['sizes'], $meta_data['sizes']['woocommerce_thumbnail'] ) ) {
			$meta_data['sizes']['woocommerce_thumbnail']['uncropped'] = empty( $size_data['height'] );
		}
		return $meta_data;
	}

	/**
	 * See if an image's dimensions match actual settings.
	 *
	 * @param array  $image Image dimensions array.
	 * @param string $size Named size.
	 * @return bool True if they match. False if they do not (may trigger regen).
	 */
	protected static function image_size_matches_settings( $image, $size ) {
		$target_size = wc_get_image_size( $size );
		$uncropped   = '' === $target_size['width'] || '' === $target_size['height'];

		if ( ! $uncropped ) {
			$ratio_match = wp_image_matches_ratio( $image['width'], $image['height'], $target_size['width'], $target_size['height'] );

			// Size is invalid if the widths or crop setting don't match.
			if ( $ratio_match && $target_size['width'] !== $image['width'] ) {
				return false;
			}

			// Size is invalid if the heights don't match.
			if ( $ratio_match && $target_size['height'] && $target_size['height'] !== $image['height'] ) {
				return false;
			}
		}

		// If cropping mode has changed, regenerate the image.
		if ( $uncropped && empty( $image['uncropped'] ) ) {
			return false;
		}

		return true;
	}

	/**
	 * Show notice when job is running in background.
	 */
	public static function regenerating_notice() {
		if ( ! self::$background_process->is_running() ) {
			WC_Admin_Notices::add_notice( 'regenerating_thumbnails' );
		} else {
			WC_Admin_Notices::remove_notice( 'regenerating_thumbnails' );
		}
	}

	/**
	 * Dismiss notice and cancel jobs.
	 */
	public static function dismiss_regenerating_notice() {
		if ( self::$background_process ) {
			self::$background_process->kill_process();

			$log = wc_get_logger();
			$log->info(
				__( 'Cancelled product image regeneration job.', 'woocommerce' ),
				array(
					'source' => 'wc-image-regeneration',
				)
			);
		}
		WC_Admin_Notices::remove_notice( 'regenerating_thumbnails' );
	}

	/**
	 * Regenerate images if the settings have changed since last re-generation.
	 *
	 * @return void
	 */
	public static function maybe_regenerate_images() {
		$size_hash = md5(
			wp_json_encode(
				array(
					wc_get_image_size( 'thumbnail' ),
					wc_get_image_size( 'single' ),
					wc_get_image_size( 'gallery_thumbnail' ),
				)
			)
		);

		if ( update_option( 'woocommerce_maybe_regenerate_images_hash', $size_hash ) ) {
			// Size settings have changed. Trigger regen.
			self::queue_image_regeneration();
		}
	}

	/**
	 * Check if we should maybe generate a new image size if not already there.
	 *
	 * @param array        $image Properties of the image.
	 * @param int          $attachment_id Attachment ID.
	 * @param string|array $size Image size.
	 * @param bool         $icon If icon or not.
	 * @return array
	 */
	public static function maybe_resize_image( $image, $attachment_id, $size, $icon ) {
		if ( ! apply_filters( 'woocommerce_resize_images', true ) ) {
			return $image;
		}

		// List of sizes we want to resize. Ignore others.
		if ( ! $image || ! in_array( $size, apply_filters( 'woocommerce_image_sizes_to_resize', array( 'woocommerce_thumbnail', 'woocommerce_gallery_thumbnail', 'woocommerce_single' ) ), true ) ) {
			return $image;
		}

		$target_size      = wc_get_image_size( $size );
		$image_width      = $image[1];
		$image_height     = $image[2];
		$ratio_match      = false;
		$target_uncropped = '' === $target_size['width'] || '' === $target_size['height'] || ! $target_size['crop'];

		// If '' is passed to either size, we test ratios against the original file. It's uncropped.
		if ( $target_uncropped ) {
			$full_size = self::get_full_size_image_dimensions( $attachment_id );

			if ( ! $full_size || ! $full_size['width'] || ! $full_size['height'] ) {
				return $image;
			}

			$ratio_match = wp_image_matches_ratio( $image_width, $image_height, $full_size['width'], $full_size['height'] );
		} else {
			$ratio_match = wp_image_matches_ratio( $image_width, $image_height, $target_size['width'], $target_size['height'] );
		}

		if ( ! $ratio_match ) {
			$full_size = self::get_full_size_image_dimensions( $attachment_id );

			if ( ! $full_size ) {
				return $image;
			}

			// Check if the actual image has a larger dimension than the requested image size. Smaller images are not zoom-cropped.
			if ( $image_width === $target_size['width'] && $full_size['height'] < $target_size['height'] ) {
				return $image;
			}

			if ( $image_height === $target_size['height'] && $full_size['width'] < $target_size['width'] ) {
				return $image;
			}

			// If the full size image is smaller both ways, don't scale it up.
			if ( $full_size['height'] < $target_size['height'] && $full_size['width'] < $target_size['width'] ) {
				return $image;
			}

			return self::resize_and_return_image( $attachment_id, $image, $size, $icon );
		}

		return $image;
	}

	/**
	 * Get full size image dimensions.
	 *
	 * @param int $attachment_id Attachment ID of image.
	 * @return array Width and height. Empty array if the dimensions cannot be found.
	 */
	private static function get_full_size_image_dimensions( $attachment_id ) {
		$imagedata = wp_get_attachment_metadata( $attachment_id );

		if ( ! is_array( $imagedata ) ) {
			return array();
		}

		if ( ! isset( $imagedata['file'] ) && isset( $imagedata['sizes']['full'] ) ) {
			$imagedata['height'] = $imagedata['sizes']['full']['height'];
			$imagedata['width']  = $imagedata['sizes']['full']['width'];
		}

		// The result of the earlier wp_get_attachment_metadata call is filterable, so we may not have height or
		// width data at this point.
		if ( ! isset( $imagedata['height'] ) || ! isset( $imagedata['width'] ) ) {
			return array();
		}

		return array(
			'width'  => $imagedata['width'],
			'height' => $imagedata['height'],
		);
	}

	/**
	 * Ensure we are dealing with the correct image attachment
	 *
	 * @param int|WP_Post $attachment Attachment object or ID.
	 * @return boolean
	 */
	public static function is_regeneratable( $attachment ) {
		if ( 'site-icon' === get_post_meta( is_object( $attachment ) ? $attachment->ID : $attachment, '_wp_attachment_context', true ) ) {
			return false;
		}

		if ( wp_attachment_is_image( $attachment ) ) {
			return true;
		}

		return false;
	}

	/**
	 * Only regenerate images for the requested size.
	 *
	 * @param array $sizes Array of image sizes.
	 * @return array
	 */
	public static function adjust_intermediate_image_sizes( $sizes ) {
		return array( self::$regenerate_size );
	}

	/**
	 * Generate the thumbnail filename and dimensions for a given file.
	 *
	 * @param string $fullsizepath Path to full size image.
	 * @param int    $thumbnail_width  The width of the thumbnail.
	 * @param int    $thumbnail_height The height of the thumbnail.
	 * @param bool   $crop             Whether to crop or not.
	 * @return array|false An array of the filename, thumbnail width, and thumbnail height, or false on failure to resize such as the thumbnail being larger than the fullsize image.
	 */
	private static function get_image( $fullsizepath, $thumbnail_width, $thumbnail_height, $crop ) {
		list( $fullsize_width, $fullsize_height ) = getimagesize( $fullsizepath );

		$dimensions = image_resize_dimensions( $fullsize_width, $fullsize_height, $thumbnail_width, $thumbnail_height, $crop );
		$editor     = wp_get_image_editor( $fullsizepath );

		if ( is_wp_error( $editor ) ) {
			return false;
		}

		if ( ! $dimensions || ! is_array( $dimensions ) ) {
			return false;
		}

		list( , , , , $dst_w, $dst_h ) = $dimensions;
		$suffix                        = "{$dst_w}x{$dst_h}";
		$file_ext                      = strtolower( pathinfo( $fullsizepath, PATHINFO_EXTENSION ) );

		return array(
			'filename' => $editor->generate_filename( $suffix, null, $file_ext ),
			'width'    => $dst_w,
			'height'   => $dst_h,
		);
	}

	/**
	 * Regenerate the image according to the required size
	 *
	 * @param int    $attachment_id Attachment ID.
	 * @param array  $image Original Image.
	 * @param string $size Size to return for new URL.
	 * @param bool   $icon If icon or not.
	 * @return string
	 */
	private static function resize_and_return_image( $attachment_id, $image, $size, $icon ) {
		if ( ! self::is_regeneratable( $attachment_id ) ) {
			return $image;
		}

		$fullsizepath = get_attached_file( $attachment_id );

		if ( false === $fullsizepath || is_wp_error( $fullsizepath ) || ! file_exists( $fullsizepath ) ) {
			return $image;
		}

		if ( ! function_exists( 'wp_crop_image' ) ) {
			include ABSPATH . 'wp-admin/includes/image.php';
		}

		self::$regenerate_size = is_customize_preview() ? $size . '_preview' : $size;

		if ( is_customize_preview() ) {
			$image_size = wc_get_image_size( $size );

			// Make sure registered image size matches the size we're requesting.
			add_image_size( self::$regenerate_size, absint( $image_size['width'] ), absint( $image_size['height'] ), $image_size['crop'] );

			$thumbnail = self::get_image( $fullsizepath, absint( $image_size['width'] ), absint( $image_size['height'] ), $image_size['crop'] );

			// If the file is already there perhaps just load it if we're using the customizer. No need to store in meta data.
			if ( $thumbnail && file_exists( $thumbnail['filename'] ) ) {
				$wp_uploads     = wp_upload_dir( null, false );
				$wp_uploads_dir = $wp_uploads['basedir'];
				$wp_uploads_url = $wp_uploads['baseurl'];

				return array(
					0 => str_replace( $wp_uploads_dir, $wp_uploads_url, $thumbnail['filename'] ),
					1 => $thumbnail['width'],
					2 => $thumbnail['height'],
				);
			}
		}

		$metadata = wp_get_attachment_metadata( $attachment_id );

		// Fix for images with no metadata.
		if ( ! is_array( $metadata ) ) {
			$metadata = array();
		}

		// We only want to regen a specific image size.
		add_filter( 'intermediate_image_sizes', array( __CLASS__, 'adjust_intermediate_image_sizes' ) );

		// This function will generate the new image sizes.
		$new_metadata = wp_generate_attachment_metadata( $attachment_id, $fullsizepath );

		// Remove custom filter.
		remove_filter( 'intermediate_image_sizes', array( __CLASS__, 'adjust_intermediate_image_sizes' ) );

		// If something went wrong lets just return the original image.
		if ( is_wp_error( $new_metadata ) || empty( $new_metadata ) ) {
			return $image;
		}

		if ( isset( $new_metadata['sizes'][ self::$regenerate_size ] ) ) {
			$metadata['sizes'][ self::$regenerate_size ] = $new_metadata['sizes'][ self::$regenerate_size ];
			wp_update_attachment_metadata( $attachment_id, $metadata );
		}

		// Now we've done our regen, attempt to return the new size.
		$new_image = self::unfiltered_image_downsize( $attachment_id, self::$regenerate_size );

		return $new_image ? $new_image : $image;
	}

	/**
	 * Image downsize, without this classes filtering on the results.
	 *
	 * @param int    $attachment_id Attachment ID.
	 * @param string $size Size to downsize to.
	 * @return string New image URL.
	 */
	private static function unfiltered_image_downsize( $attachment_id, $size ) {
		remove_action( 'image_get_intermediate_size', array( __CLASS__, 'filter_image_get_intermediate_size' ), 10, 3 );

		$return = image_downsize( $attachment_id, $size );

		add_action( 'image_get_intermediate_size', array( __CLASS__, 'filter_image_get_intermediate_size' ), 10, 3 );

		return $return;
	}

	/**
	 * Get list of images and queue them for regeneration
	 *
	 * @return void
	 */
	public static function queue_image_regeneration() {
		global $wpdb;
		// First lets cancel existing running queue to avoid running it more than once.
		self::$background_process->kill_process();

		// Now lets find all product image attachments IDs and pop them onto the queue.
		$images = $wpdb->get_results( // @codingStandardsIgnoreLine
			"SELECT ID
			FROM $wpdb->posts
			WHERE post_type = 'attachment'
			AND post_mime_type LIKE 'image/%'
			ORDER BY ID DESC"
		);
		foreach ( $images as $image ) {
			self::$background_process->push_to_queue(
				array(
					'attachment_id' => $image->ID,
				)
			);
		}

		// Lets dispatch the queue to start processing.
		self::$background_process->save()->dispatch();
	}
}

add_action( 'init', array( 'WC_Regenerate_Images', 'init' ) );

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
abstracts
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
admin
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
blocks
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
cli
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
customizer
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
data-stores
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
emails
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
export
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
gateways
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
import
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
integrations
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
interfaces
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
legacy
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
libraries
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
log-handlers
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
payment-tokens
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
product-usage
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
queue
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
react-admin
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
rest-api
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
shipping
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
shortcodes
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
theme-support
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
tracks
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
traits
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
walkers
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
wccom-site
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
widgets
--
July 10 2025 04:32:23
inteuuod / inteuuod
0755
.htaccess
0.41 KB
July 10 2025 04:32:23
inteuuod / inteuuod
0644
class-wc-ajax.php
118.694 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-auth.php
12.69 KB
July 30 2024 19:31:16
inteuuod / inteuuod
0644
class-wc-autoloader.php
3.321 KB
September 23 2024 20:44:04
inteuuod / inteuuod
0644
class-wc-background-emailer.php
4.575 KB
August 20 2020 23:18:50
inteuuod / inteuuod
0644
class-wc-background-updater.php
3.452 KB
August 20 2020 23:18:50
inteuuod / inteuuod
0644
class-wc-brands-brand-settings-manager.php
1.783 KB
September 23 2024 20:44:04
inteuuod / inteuuod
0644
class-wc-brands-coupons.php
6.894 KB
January 21 2025 18:53:44
inteuuod / inteuuod
0644
class-wc-brands.php
33.975 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-breadcrumb.php
9.494 KB
October 21 2020 03:38:50
inteuuod / inteuuod
0644
class-wc-cache-helper.php
11.17 KB
August 27 2024 23:04:44
inteuuod / inteuuod
0644
class-wc-cart-fees.php
3.367 KB
September 26 2023 21:42:36
inteuuod / inteuuod
0644
class-wc-cart-session.php
18.921 KB
March 03 2025 22:28:12
inteuuod / inteuuod
0644
class-wc-cart-totals.php
28.399 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-cart.php
70.182 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-checkout.php
50.146 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-cli.php
2.866 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-comments.php
22.191 KB
June 02 2025 20:47:42
inteuuod / inteuuod
0644
class-wc-countries.php
49.162 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-coupon.php
39.642 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-customer-download-log.php
3.371 KB
August 20 2020 23:18:50
inteuuod / inteuuod
0644
class-wc-customer-download.php
10.339 KB
July 30 2024 19:31:16
inteuuod / inteuuod
0644
class-wc-customer.php
32.034 KB
May 12 2025 15:44:58
inteuuod / inteuuod
0644
class-wc-data-exception.php
1.29 KB
May 23 2018 19:30:10
inteuuod / inteuuod
0644
class-wc-data-store.php
6.594 KB
October 19 2022 00:34:38
inteuuod / inteuuod
0644
class-wc-datetime.php
2.256 KB
April 20 2022 06:50:54
inteuuod / inteuuod
0644
class-wc-deprecated-action-hooks.php
6.588 KB
February 27 2024 18:59:46
inteuuod / inteuuod
0644
class-wc-deprecated-filter-hooks.php
7.342 KB
February 22 2023 07:17:34
inteuuod / inteuuod
0644
class-wc-discounts.php
36.509 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-download-handler.php
28.372 KB
December 18 2024 22:19:16
inteuuod / inteuuod
0644
class-wc-emails.php
28.2 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-embed.php
4.24 KB
January 21 2025 18:53:44
inteuuod / inteuuod
0644
class-wc-form-handler.php
45.735 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-frontend-scripts.php
27.843 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-geo-ip.php
30.407 KB
September 23 2024 20:44:04
inteuuod / inteuuod
0644
class-wc-geolite-integration.php
1.988 KB
January 16 2020 06:10:02
inteuuod / inteuuod
0644
class-wc-geolocation.php
11.322 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-https.php
4.335 KB
June 20 2023 23:45:50
inteuuod / inteuuod
0644
class-wc-install.php
106.709 KB
June 02 2025 15:59:32
inteuuod / inteuuod
0644
class-wc-integrations.php
1.277 KB
August 20 2020 23:18:50
inteuuod / inteuuod
0644
class-wc-log-levels.php
3.898 KB
January 30 2024 23:24:56
inteuuod / inteuuod
0644
class-wc-logger.php
9.376 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-meta-data.php
2.207 KB
April 20 2022 06:50:54
inteuuod / inteuuod
0644
class-wc-order-factory.php
8.523 KB
April 30 2024 19:35:34
inteuuod / inteuuod
0644
class-wc-order-item-coupon.php
4.077 KB
December 22 2021 00:24:58
inteuuod / inteuuod
0644
class-wc-order-item-fee.php
9.21 KB
March 03 2025 22:28:12
inteuuod / inteuuod
0644
class-wc-order-item-meta.php
5.803 KB
December 22 2021 00:24:58
inteuuod / inteuuod
0644
class-wc-order-item-product.php
15.841 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-order-item-shipping.php
8.802 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-order-item-tax.php
6.488 KB
December 22 2021 00:24:58
inteuuod / inteuuod
0644
class-wc-order-item.php
18.545 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-order-query.php
2.554 KB
July 28 2021 04:11:34
inteuuod / inteuuod
0644
class-wc-order-refund.php
5.991 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-order.php
74.093 KB
June 02 2025 15:59:32
inteuuod / inteuuod
0644
class-wc-payment-gateways.php
11.897 KB
May 26 2025 19:11:58
inteuuod / inteuuod
0644
class-wc-payment-tokens.php
6.24 KB
November 23 2022 05:58:58
inteuuod / inteuuod
0644
class-wc-post-data.php
21.725 KB
March 03 2025 22:28:12
inteuuod / inteuuod
0644
class-wc-post-types.php
32.003 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-privacy-background-process.php
1.79 KB
March 03 2025 22:28:12
inteuuod / inteuuod
0644
class-wc-privacy-erasers.php
13.608 KB
September 23 2024 20:44:04
inteuuod / inteuuod
0644
class-wc-privacy-exporters.php
14.691 KB
July 28 2021 04:11:34
inteuuod / inteuuod
0644
class-wc-privacy.php
17.189 KB
March 03 2025 22:28:12
inteuuod / inteuuod
0644
class-wc-product-attribute.php
6.97 KB
January 19 2022 02:24:34
inteuuod / inteuuod
0644
class-wc-product-download.php
12.253 KB
April 10 2024 16:54:10
inteuuod / inteuuod
0644
class-wc-product-external.php
4.984 KB
March 03 2025 22:28:12
inteuuod / inteuuod
0644
class-wc-product-factory.php
3.881 KB
January 21 2025 18:53:44
inteuuod / inteuuod
0644
class-wc-product-grouped.php
5.603 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-product-query.php
2.277 KB
January 21 2025 18:53:44
inteuuod / inteuuod
0644
class-wc-product-simple.php
2.697 KB
January 21 2025 18:53:44
inteuuod / inteuuod
0644
class-wc-product-variable.php
24.576 KB
June 02 2025 15:59:32
inteuuod / inteuuod
0644
class-wc-product-variation.php
20.177 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-query.php
33.36 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-rate-limiter.php
4.004 KB
December 01 2021 04:23:30
inteuuod / inteuuod
0644
class-wc-regenerate-images-request.php
7.737 KB
January 25 2023 03:19:12
inteuuod / inteuuod
0644
class-wc-regenerate-images.php
15.436 KB
June 25 2024 21:17:40
inteuuod / inteuuod
0644
class-wc-register-wp-admin-settings.php
5.05 KB
June 22 2021 15:24:06
inteuuod / inteuuod
0644
class-wc-rest-authentication.php
21.551 KB
June 25 2024 21:17:40
inteuuod / inteuuod
0644
class-wc-rest-exception.php
0.27 KB
September 23 2020 01:16:50
inteuuod / inteuuod
0644
class-wc-session-handler.php
15.611 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-shipping-rate.php
8.065 KB
March 03 2025 22:28:12
inteuuod / inteuuod
0644
class-wc-shipping-zone.php
13.078 KB
September 23 2020 01:16:50
inteuuod / inteuuod
0644
class-wc-shipping-zones.php
4.01 KB
August 20 2020 23:18:50
inteuuod / inteuuod
0644
class-wc-shipping.php
12.852 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
class-wc-shortcodes.php
18.822 KB
January 21 2025 18:53:44
inteuuod / inteuuod
0644
class-wc-structured-data.php
23.796 KB
March 03 2025 22:28:12
inteuuod / inteuuod
0644
class-wc-tax.php
37.079 KB
June 20 2023 23:45:50
inteuuod / inteuuod
0644
class-wc-template-loader.php
21.38 KB
June 09 2025 15:55:46
inteuuod / inteuuod
0644
class-wc-tracker.php
48.207 KB
June 02 2025 15:59:32
inteuuod / inteuuod
0644
class-wc-validation.php
5.79 KB
May 28 2024 14:28:20
inteuuod / inteuuod
0644
class-wc-webhook.php
29.405 KB
December 18 2024 22:19:16
inteuuod / inteuuod
0644
class-woocommerce.php
49.085 KB
June 23 2025 15:50:22
inteuuod / inteuuod
0644
wc-account-functions.php
14.014 KB
December 18 2024 22:19:16
inteuuod / inteuuod
0644
wc-attribute-functions.php
21.179 KB
January 21 2025 18:53:44
inteuuod / inteuuod
0644
wc-brands-functions.php
4.17 KB
September 23 2024 20:44:04
inteuuod / inteuuod
0644
wc-cart-functions.php
20.049 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-conditional-functions.php
14.199 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-core-functions.php
86.207 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-coupon-functions.php
3.095 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-deprecated-functions.php
38.115 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-formatting-functions.php
47.764 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-notice-functions.php
8.057 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-order-functions.php
40.503 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-order-item-functions.php
5.032 KB
January 25 2023 03:19:12
inteuuod / inteuuod
0644
wc-order-step-logger-functions.php
5.015 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-page-functions.php
9.431 KB
September 23 2024 20:44:04
inteuuod / inteuuod
0644
wc-product-functions.php
58.515 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-rest-functions.php
12.951 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-stock-functions.php
17.133 KB
January 21 2025 18:53:44
inteuuod / inteuuod
0644
wc-template-functions.php
132.676 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-template-hooks.php
12.653 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-term-functions.php
23.81 KB
June 16 2025 19:21:28
inteuuod / inteuuod
0644
wc-update-functions.php
91.822 KB
June 02 2025 15:59:32
inteuuod / inteuuod
0644
wc-user-functions.php
33.352 KB
May 12 2025 21:07:28
inteuuod / inteuuod
0644
wc-webhook-functions.php
5.767 KB
June 25 2024 21:17:40
inteuuod / inteuuod
0644
wc-widget-functions.php
2.015 KB
August 20 2020 23:18:50
inteuuod / inteuuod
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF