=== ShortPixel Image Optimizer - Optimize Images, Convert WebP & AVIF ===
Contributors: ShortPixel
Tags: convert webp, optimize images, image optimization, resize, compressor, image, avif, compression, optimize, image optimiser, image compression, compress pdf, compress jpg, compress png, performance, photography, smush, scale, pictures
Requires at least: 4.8.0
Tested up to: 6.1
Requires PHP: 5.6
Stable tag: 5.2.0
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Optimize images & PDFs smartly. Create and compress next-gen WebP and AVIF formats. Smart crop and resize.

== Description ==

**Optimize images and create WebP/AVIF versions with an easy-to-use, comprehensive, lightweight, stable and frequently updated freemium image compression plugin supported by the friendly team that created it.**

Increase your website's SEO ranking, number of visitors, and ultimately your sales by optimising any image or PDF document on your website.
ShortPixel is an easy to use, lightweight, install-and-forget-about-it <a href="https://shortpixel.com" target="_blank">image optimization</a> plugin that can compress all your past images and PDF documents with a single click. New images are automatically resized/rescaled and optimized on the fly, in the background. It's also compatible with any gallery, slider or eCommerce plugin.

**Ready for a quick DEMO? Test our plugin <a href="https://demo.tastewp.com/shortpixel-image-optimiser" target="_blank">here</a> and <a href="https://wpsandbox.net/" target="_blank">here</a>.**
Or you can create a staging copy of your site using <a href="https://wp-staging.com/" target="_blank">WP Staging</a> and test it there.

Short Pixel uses minimal resources and works well with any shared, cloud, VPS or dedicated web hosting. It can optimize any image you have on your website even the images that aren't listed in Media Library like those in galleries like <a href="https://wordpress.org/plugins/nextgen-gallery/" target="_blank">NextGEN</a>, <a href="https://wordpress.org/plugins/modula-best-grid-gallery/" target="_blank">Modula</a> or added directly via FTP!

Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF, WebP, and AVIF) plus PDF files.
We also offer **glossy** JPEG compression which is a very high-quality lossy optimization algorithm. Specially designed for photographers!
Optimized images mean better user experience, better PageSpeed Insights or GTmetrix results, better Google PageRank, and more visitors.

Make an instant <a href="https://shortpixel.com/image-compression-test" target="_blank">image compression test</a> of your site or <a href="https://shortpixel.com/online-image-compression" target="_blank">compress some images</a> to test our optimization algorithms.

**<a href="https://shortpixel.com/spio-unlimited/" target="_blank">New Plan: ShortPixel Unlimited</a>**

This is the perfect monthly plan for single website owners.
It allows you to optimize an unlimited number of images with ShortPixel Image Optimizer on your website.
Read more details on our <a href="https://shortpixel.com/knowledge-base/article/555-how-does-the-unlimited-plan-work" target="_blank">dedicated page</a>.

**New! HEIC file support**
With ShortPixel you can now add images in Apple format (HEIC) directly from your iPhone. They will be automatically converted to JPG and then optimized according to your settings. Easy! <a href="https://shortpixel.com/knowledge-base/article/566-heic-apple-images-support-in-shortpixel-image-optimizer" target="_blank">Read more</a>.

**Smart Cropping**

With this new feature, all thumbnails used on your website are not only optimized, but also regenerated to fully display the subject of the image.
All thumbnails fully display the subject and look consistent as well. The new thumbnails look sharper (and can be slightly bigger) than the ones created by WordPress. Ideal for e-commerce and other websites where the images are paramount to selling the products or to support the content. See <a href="https://shortpixel.com/knowledge-base/article/182-what-is-smart-cropping" target="_blank">an example</a>.


**Why is ShortPixel the best choice when it comes to image optimization or PDF compression?**

* popular plugin with over 300,000 active installations - according to WordPress
* compress JPG (and its variations JPEG, JPEG 2000, JPEG XR), PNG, GIF (still or animated) images and also PDF documents
* option to convert any JPEG, PNG or GIF (even animated ones!) to **WebP** and **AVIF** for more Google love. <a href="https://shortpixel.com/blog/how-webp-images-can-speed-up-your-site/" target="_blank">How to enable WebP?</a>. <a href="https://shortpixel.com/blog/what-is-avif-and-why-is-it-good/" target="_blank">What is AVIF and why is it good?</a>.
* **New!:** full <a href="https://shortpixel.com/knowledge-base/article/537-wp-cli-support-for-shortpixel-image-optimizer" target="_blank">WP-CLI support</a> for background processing, useful especially for websites with a very large Media Library
* **New!:** Easily add <a href="https://shortpixel.com/knowledge-base/article/543-how-to-schedule-a-cron-event-to-run-shortpixel-image-optimizer" target="_blank">recurrent cron jobs</a> for background optimization. Useful if you have users uploading images via the front end of your website
* **New!:** Smart Cropping. Generate subject-centered thumbnails using ShortPixel's AI engine 
* option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format
* option to include the next generation images (WebP and AVIF) into the front-end pages by using the `<picture>` tag instead of `<img>`, independent from generating them through the plugin
* compatible with WP Retina 2x - all **retina images** are automatically compressed. <a href="https://shortpixel.com/blog/how-to-use-optimized-retina-images-on-your-wordpress-site-for-best-user-experience-on-apple-devices/" target="_blank">How to benefit from Retina displays?</a>
* optimize thumbnails as well as featured images. You can also **select individual thumbnails to exclude** from optimization
* advanced exclusion options that allow excluding images based on filename, path, size or complex regex exclusions
* ability to optimize any image on your site including images in **NextGEN Gallery** and any other image galleries or sliders
* option to scale images down, with 2 different options, which is very useful to automatically resize large images. This applies to the featured images and there is no need for additional plugins like Imsanity
* CMYK to RGB conversion
* skip already optimized images
* **24h <a href="https://wordpress.org/support/plugin/shortpixel-image-optimiser/reviews/?filter=5" target="_blank">stellar support</a>** (24/7) directly from developers.
* easily **test lossy/glossy/lossless** versions of the images with a single click in your Media Library
* **great for photographers**: <a href="https://shortpixel.com/blog/how-much-smaller-can-be-images-without-exif-icc/" target="_blank">keep or remove EXIF</a> data from your images, compress photos with lossless option
* works well with both HTTPS and HTTP websites
* fully compatible with any WordPress multisite install (either with sub-folders or sub-domains)
* uses progressive JPEG for larger images in order to speed up the image display
* you can run ShortPixel plugin on **multiple websites** or on a **multisite** with a **single API Key**
* it is **safe to test** and use the plugin: all the original images are by default saved in a local backup that can be restored with a click, either one by one or in bulk
* 'Bulk' optimize all the existing images in Media Library or in any gallery with one click
* works great for **eCommerce websites using WooCommerce** or other plugins
* works great with NextGEN gallery, Foo Gallery and any other galleries and sliders
* fully compatible with the <a href="https://wordpress.org/plugins/amazon-s3-and-cloudfront/" target="_blank">WP Offload Media</a> plugin
* compatible with WP Engine hosted websites and all the major hosting providers
* compatible with WPML and WPML Media plugins
* no file size limit
* integrates with Gravity Forms post_image field type optimizing the images upon upload
* compatible with watermarking plugins
* option to deactivate auto-optimizing images on upload
* no credits are used for the images that are optimised less that 5%
* direct integration with Cloudflare by using a Cloudflare Token
* 30 days optimization report with all image details and overall statistics
* We are GDPR compliant! <a href="https://shortpixel.com/privacy#gdpr" target="_blank">Read more.</a>
* **free optimization credits for non-profits**, <a href="https://shortpixel.com/contact" target="_blank">contact us</a> for details

**How much does it cost?**
ShortPixel comes with 100 free credits/month and additional credits can be bought for as little as $4.99 for 5,000 image credits.
Check out <a href="https://shortpixel.com/pricing" target="_blank">our prices</a>.

> **Testimonials:**
> ★★★★★ **A Super Plugin works very well 62% reduction overall.** [robertvarns](https://wordpress.org/support/topic/a-super-plugin-works-very-well-62-reduction-overall/)
> ★★★★★ **The secret sauce for a WordPress website.**  [mark1mark](https://wordpress.org/support/topic/the-secret-sauce-for-a-wordpress-website/)
> ★★★★★ **A must have plugin, great support!** [ElColo13](https://wordpress.org/support/topic/a-must-have-plugin-great-support/)
> ★★★★★ **Excellent Plugin! Even Better Customer Service!**  [scaliendo](https://wordpress.org/support/topic/great-plugin-great-support-508/)
> ★★★★★ **Great image compression, solid plugin, equally great support.** [matters1959](https://wordpress.org/support/topic/support-shortpixel-image-optimiser/)
> [more testimonials](https://wordpress.org/support/plugin/shortpixel-image-optimiser/reviews/?filter=5)

[youtube https://www.youtube.com/watch?v=5EbX0Hsy6j4]

Help us spread the word by recommending ShortPixel to your friends and collect **100 lifetime monthly additional image credits for each referred active user**. Make money by promoting a great plugin with our <a href="https://shortpixel.com/free-sign-up-affiliate" target="_blank">30% commission affiliate program</a>.

**Other plugins by ShortPixel**

* [ShortPixel Adaptive Images](https://wordpress.org/plugins/shortpixel-adaptive-images/) - On-the-fly image optimization & CDN delivery
* [Enable Media Replace](https://wordpress.org/plugins/enable-media-replace/) - Easily replace images or files in Media Library
* [reGenerate Thumbnails Advanced](https://wordpress.org/plugins/regenerate-thumbnails-advanced/) - Easily regenerate thumbnails
* [Resize Image After Upload](https://wordpress.org/plugins/resize-image-after-upload/) - Automatically resize each uploaded image
* [WP SVG Images](https://wordpress.org/plugins/wp-svg-images/) - Secure upload of SVG files to Media Library 
* [ShortPixel Critical CSS](https://wordpress.org/plugins/shortpixel-critical-css/) - Automatically generate above-the-fold CSS for fatster loading times and better SEO scores

**Get in touch!**

* Email <a href="https://shortpixel.com/contact" target="_blank">https://shortpixel.com/contact</a>
* Twitter <a href="https://twitter.com/shortpixel" target="_blank">https://twitter.com/shortpixel</a>
* Facebook <a href="https://www.facebook.com/ShortPixel" target="_blank">https://www.facebook.com/ShortPixel</a>
* LinkedIn <a href="https://www.linkedin.com/company/shortpixel" target="_blank">https://www.linkedin.com/company/shortpixel</a>

== Installation ==

Let's get the ShortPixel plugin running on your WordPress website:


1. Sign up using your email at <a href="https://shortpixel.com/wp-apikey" target="_blank">https://shortpixel.com/wp-apikey</a>.
2. You will receive your personal API key in a confirmation email, to the address you provided.
3. Upload the ShortPixel plugin to the /wp-content/plugins/ directory
4. Use your unique API key to activate the ShortPixel plugin in the 'Plugins' menu in WordPress.
5. Uploaded images can be automatically optimized in the Media Library.
6. Done!


== Frequently Asked Questions ==

= How does ShortPixel compare to other image optimisation plugins (e.g Smush, Imagify, TinyPNG, Kraken, EWWW, Optimole)?  =
	ShortPixel consistently has better compression rates along with more features, backup support and has very affordable one-time or monthly plans.
	Here are a couple of independent reviews:
	AuthorityHacker - "ShortPixel is our tool of choice, simply because it’s pretty much automated – we just let it do its thing." (<a href="https://www.authorityhacker.com/best-wordpress-image-optimizer/" target="_blank">read full review</a>)
	WP Modula - "One of the reasons I’m personally a huge fan of ShortPixel is the built-in support for next-gen image formats like WebP." (<a href="https://wp-modula.com/the-best-wordpress-image-optimization-plugins/" target="_blank">read full review</a>)

= Can I use the same API Key on multiple web sites? =
    Yes, you can.
    As long as you have available credits, you can use a single API Key on as many websites as you wish!

= What plan is better for me? What do you recommend? =
	Everyone has different needs, but generally, we recommend getting a One-Time plan to optimize your whole Media Library and then get a Monthly plan to optimize your future uploads. To learn more, have a look at <a href="https://help.shortpixel.com/article/30-monthly-plans-vs-one-time-plans" target="_blank">this comparison</a>

= I don't know how many thumbnails do I have, what plan should I take?
	To know how many thumbnails you have, just install the plugin and go to Media > Bulk ShortPixel. The plugin will tell you how many thumbnails you've got. Based on this, have a look at <a href="https://shortpixel.com/pricing" target="_blank">our plans</a>

= Can I upgrade/downgrade easily my plan? =
	Of course. You can upgrade or downgrade your plans in a couple of clicks from your account on shortpixel.com.

= Can I test/use the plugin for free? =
    Yes, you can.
    We offer 100 free image optimization credits each month. Exceeding the monthly free quota will pause the optimization process till the quota is reset or extended by buying one of our plans.

= Can I optimize images that aren't in Media Library? =
    Absolutely.
    You can actually optimize any image you have on your site regardless of its place. You just need to add - in the Advanced section of the ShortPixel Settings - the folders where the images you want to optimize are located and ShortPixel will work its magic and do the rest.

= Can I optimize images that are both past and new? =
    Sure!
    You can optimize all your past/current images and photos using our "Bulk ShortPixel" page in your Media with a single click.

= A credit = an optimized image? =
    Yes, that is correct.
    But please note that usually, an image in Media Library has 5 or more associated thumbs. Each optimized thumbnail requires a credit. In the rare cases when ShortPixel does not optimise the image (lossy) with at least 5%, the credit will not be consumed, though.

= Can I restore my images? What happens with the originals? =
    If you choose the "Image backup" option in Settings/ShortPixel then the original version of any optimized image or PDF will be saved in the backup folder.
    The original image is needed if you want to restore an image or if you want to convert an image from lossy/glossy to lossless or vice-versa.

= What types of formats can be optimized? =
    ShortPixel optimises JPEG (JPG, JPEG, JPEG 2000, JPEG XR), PNG, GIF (animated and still), and PDF type of files.

= Do you have one-time plans? =
    Yes we do.
    The credits that come with our <a href="https://shortpixel.com/plans" >one-time plans</a> never expire. Yummy! :-)

= What happens to my existing images? =
    Your existing images are replaced with the optimized ones.
    If you choose the backup option then the originals will be saved in a separate folder so you can restore them should you ever need/want to do that.

= How does the plugin work? =
    Our lightweight plugin sends the original images to our Image Optimization Cloud where they are compressed. ShortPixel then downloads the optimized images and the unoptimized originals are replaced with the optimised versions.

= Do you optimize images in the cloud? =
    Yes, all the images processed by ShortPixel are optimized in the Cloud. This takes the load off of your server and allows us to produce the best results.

= What payment methods are accepted? =
    We accept payments via card (Mastercard, Visa, Maestro, American Express, Discover, Diners Club, JCB, UnionPay), PayPal, and Apple Pay.

= How do I activate the API key on a multisite? =
    You have to activate the plugin in the network admin and then activate it manually on each individual site in the multisite. Once you have done that, the Settings menu appears and you can add the API key for each individual site.
    As an alternative, you can edit wp-config.php and add this line:

`define('SHORTPIXEL_API_KEY', 'APIKEY');`
where `APIKEY` is the API Key received upon sign up.
    If configured that way, the API key will be used for all the sites of the multisite but will only be visible on the main site’s Settings page, being hidden for the rest of the sites.

= I am not the only one working on the WordPress Dashboard. How can I hide my API key? =
    There is a simple way to hide the API key, all you need to do is to add these two lines in your wp-config.php:

`define('SHORTPIXEL_API_KEY', '<<your api key here>>');`
`define('SHORTPIXEL_HIDE_API_KEY', true);`

= How much is a credit? =
    A credit is used each time ShortPixel optimizes an image or thumbnail by at least 5%. If we're not able to optimize an image or thumbnail by at least 5% then no credit will be used :-)
    Please also note that usually images in your Media Library have 3-5 thumbs associated and a credit will be used for each featured image or associated thumbnail that is optimized.

= Why shall I use a WordPress plugin and not an offline tool? =
    Because ShortPixel algorithms were perfected while optimizing over 3.5 billion real-life images.
    ShortPixel not only offers the best compression for JPEG, PNG, GIF, and PDF files but it also saves you a lot of time. You just install it on your site and then ShortPixel will take care that all the images on your site are immediately optimized after upload.

= Does optimizing images affect my ALT tags? =
    No, ShortPixel only optimizes images, it won't touch anything else like your HTML/CSS.

= If I stop using ShortPixel will my images remain optimized? =
    Absolutely!
    Once optimized, the images will remain optimized unless you explicitly choose to restore them. But why would you do that? :-)

= Do I have to pay monthly or one time? =
    We have both options available.
    One-time credits never expire and are a bit more expensive. Check out our prices <a href="https://shortpixel.com/pricing" >here</a>

= When can I cancel a monthly plan? =
    Whenever you want.
    The credits you still have available for the current billing period will still be available until the end of the billing period. At the end of it, you won't be billed again and the plan will be reset to the free plan.

= When do credits expire? =
    Monthly credits expire after 30 days while one-time credits never expire.

= Do you have an API? =
    Yes, we have several APIs and tools.
    You can learn more about it here:
    <a href="https://shortpixel.com/api-tools">https://shortpixel.com/api-tools</a>

= Can I use the ShortPixel WP plugin on a localhost installation? =
    Unfortunately not :-(
    But you can use either our command line tool or our web tool
    <a href="https://shortpixel.com/web-tool-docs">https://shortpixel.com/web-tool-docs</a>
    <a href="https://shortpixel.com/cli-docs">https://shortpixel.com/cli-docs</a>

= How does resizing work? =
    If you choose the option to resize images on your site, then the featured image can be resized to a predefined size while keeping its aspect and proportions intact. The associated thumbs won't be resized.
    Using this option you can safely upload original images safely without needing to apply any pre-processing to make them smaller.

= Will ShortPixel work if my website is using CloudFare? =
    Absolutely! Sometimes you'll need to make sure you whitelist some IPs, just <a href="https://shortpixel.com/contact">contact us</a> and we'll assist you with that.

= I’m stuck. What do I do? =

The ShortPixel team is here to help. <a href="https://shortpixel.com/contact">Contact us</a>!


== Actions and Filters for Developers ==

The ShortPixel Image Optimiser plugin calls the following actions and filters:

`do_action( 'shortpixel_image_optimised', $post_id );`
upon successful optimization;

`do_action("shortpixel_before_restore_image", $post_id);`
before restoring an image from backup;

`do_action("shortpixel_after_restore_image", $post_id);`
after succesful restore;

For version 4.22.10 and earlier:

`apply_filters("shortpixel_backup_folder", $backup_folder, $main_file_path, $sizes);`
just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups. The `$sizes` are the sizes array from metadata;

For version 5.0.0 and later:

`$directory = apply_filters("shortpixel/file/backup_folder", $directory, $file);`
just before returning the ShortPixel backup folder, usually /wp-content/uploads/ShortpixelBackups).

`apply_filters('shortpixel_image_exists', file_exists($path), $path, $post_id);`
post ID is not always set, only if it's an image from Media Library;

`apply_filters('shortpixel_image_urls', $URLs, $post_id);`
filters the URLs that will be sent to optimisation, `$URLs` is a plain array;

<strong>The filter below is deprecated starting with version 5.0.0!</strong>

`apply_filters('shortpixel/db/chunk_size', $chunk);`
the `$chunk` is the value ShortPixel chooses to use as the number of selected records in one query (based on total table size), some hosts work better with a different value;

For version 4.22.10 and earlier:

`apply_filters('shortpixel/backup/paths', $PATHs, $mainPath);`
filters the array of paths of the images sent for backup and can be used to exclude certain paths/images/thumbs from being backed up, based on the image path. `$mainPath` is the path of the main image, while `$PATHs` is an array with all files to be backed up (including thumbnails);

For version 5.0.0 and later:

`apply_filters('shortpixel/image/skip_backup', false, $this->getFullPath(), $this->is_main_file)`
filters the images that are skipped or not from the backup. Return true for the type of images to be skipped in the backup. If you check if `is_main_file` is true and return false (do not skip backup), while while otherwise returning true, the backup will be kept only for the main image. We suggest using it in conjuction with this action that fires right after the restore from backup is done:

`do_action('shortpixel/image/after_restore', $this, $this->id, $cleanRestore);`
This action can be used to cleanup the meta data from the database, regenerate thumbnails after restoring the main file, writing the updated meta data, etc.

`apply_filters('shortpixel/settings/image_sizes', $sizes);`
filters the array (`$sizes`) of image sizes that can be excluded from processing (displayed in the plugin Advanced settings);

`apply_filters('shortpixel/api/request', $requestParameters, $item_id);`
filters the parameters sent to the optimization API (through `$requestParameters`), described in detail here: <a href="https://shortpixel.com/api-docs" target="_blank">ShortPixel Reducer API</a>; `$item_id` contains the ID of the Media Library item, or the ID of the Custom Media item (when used). In short, this filter can be used to alter any parameters sent to the API, depending on the needs. For example, you can set different resize parameters for different post types, different compression levels, remove EXIF or not, covert WebP/AVIF, and basically any other parameter that is sent to the API for a specific image (together with all its thumbnails).

This filter enables the background ShortPixel processing in additional pages (see <a href="https://shortpixel.com/knowledge-base/article/334-on-what-pages-does-spio-optimize-images" target="_blank">here</a> the original list). Here's an example of this filter that enables the processing on the Comments screen (to be placed in your functions.php file):

`
add_filter('shortpixel/init/optimize_on_screens', function ($screens) {
	$screens[] = 'edit-comments';
	return $screens;
});
`
The `edit-comments` is the ID of the screen where you want to enable the processing.

If you want to add multiple pages, here's what the snippet looks like:

`
add_filter('shortpixel/init/optimize_on_screens', function ($screens) {
	$screens = array('edit-comments', 'plugins', 'another-custom-post-type-page');
	return $screens;
	});
`

`add_filter('shortpixel/image/filecheck', function () { return true; });`
This filter forces a file check for WebP/AVIF in case they were manually removed from disk.

In order to define custom thumbnails to be picked up by the optimization you have two options, both comma separated defines:

`define('SHORTPIXEL_CUSTOM_THUMB_SUFFIXES', '_tl,_tr');`
will handle custom thumbnails like image-100x100_tl.jpg;

`define('SHORTPIXEL_CUSTOM_THUMB_INFIXES', '-uae');`
 will handle custom thumbnails like image-uae-100x100.jpg;

`define('SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION', true);`
`define('SHORTPIXEL_USE_DOUBLE_AVIF_EXTENSION', true);`
will tell the plugin to create double extensions for the WebP/AVIF image counterparts, for example, image.jpg.webp/image.jpg.avif for image.jpg;

Hide the Cloudflare settings by defining these constants in wp-config.php:

`define('SHORTPIXEL_CFTOKEN', 'the Cloudflare API token that has Purge Cache right');`
`define('SHORTPIXEL_CFZONE', 'The Zone ID from the domain settings in Cloudflare');`

Add HTTP basic authentication credentials by defining these constants in wp-config.php

`define('SHORTPIXEL_HTTP_AUTH_USER', 'user');`
`define('SHORTPIXEL_HTTP_AUTH_PASSWORD', 'pass');`

== Screenshots ==

1. Bulk optimization running. (Media>Bulk ShortPixel)

2. Activate your API key in the plugin Settings. (Settings>ShortPixel)

3. Check out the main settings after the API key is activated. (Settings>ShortPixel)

4. Tweak it using Advanced settings. (Settings>ShortPixel)

5. Compress all your past images with one click. (Media>Bulk ShortPixel)

6. Check image optimization status, and restore or reoptimize the image. (Media>Library)

7. Check image optimisation details. (Media>Library->Edit)

8. Check other optimized images' status - themes or other plugins' images. (Media>Other Media)

== Changelog ==

= 5.2.0 =
Release date February 15, 2023
* New: added support for automatic conversion of HEIC files (Apple image format for iOS devices) to JPG;
* New: the conversion from PNG to JPG has been completely reworked, making it more robust and stable;
* Compat: the integration with WP Offload Media has been updated, according to the latest version;
* Compat: fully tested and working with PHP 8.1;
* Tweak: fractional optimization is now possible, especially useful for images with many thumbnails;
* Tweak: Custom Media stats are now retrieved with only one DB query, speeding up the settings page;
* Tweak: if a PNG is not converted, there is now a reason in the ShortPixel box on the Edit Media screen;
* Tweak: notifications are no longer reset when the plugin is activated/updated, preventing the same notifications from reappearing;
* Fix: security hardening for the settings controller and debug functions;
* Fix: a 4-digit Custom Media folder could not be added due to Media Library exclusions;
* Fix: a check is now performed before adding a NextGen gallery to Custom Media, to avoid duplicates;
* Fix: a failed PNG conversion to JPG can now be retried;
* Fix: credits can no longer be purchased from a sub-account;
* Fix: when converting a large PNG to JPG, the resulting scaled JPG was not optimized properly; 
* Fix: size exclusions work as expected again;
* Fix: when credits are insufficient for the entire bulk, a notification is displayed again;
* Fix: page selection on the Custom Media screen now works as expected again;
* Fix: NextGen Gallery pages no longer crash due to jQuery errors;
* Fix: NextGen galleries are no longer added twice, a check for double slashes has been added;
* Fix: if a PNG image has the same filename as a JPG image after conversion, it's now renamed correctly to avoid conflicts;
* Fix: when an image is deleted from NextGen Gallery, the WebP/AVIF files are also removed;
* Fix: if an optimized image is in a folder without write permissions, WebP/AVIF generation is no longer attempted;
* Fix: when entering a very long email address, the browser no longer hangs;
* Fix: notification for list view mode in Media Library works again;
* Fix: various fixes and updates to the plugin's CSS and text;
* Language: 31 new strings added, 8 updated, 0 fuzzed, and 15 deprecated.

= 5.1.6 =
Release date December 31, 2022
* Fix: in some cases, AVIF files were not cropped correctly;
* Language: 0 new strings added, 0 updated, 0 fuzzed, and 0 deprecated.

= 5.1.5 =
Release date November 29, 2022
* Fix: WebP/AVIF delivery now works correctly, without affecting SVG files or other images or requests (e.g. in WooCommerce). Sorry about this!;
* Fix: a PHP warning was displayed if no valid API key was added;
* Fix: error in Custom Media if the folder is not in the root directory;
* Language: 0 new strings added, 0 updated, 0 fuzzed, and 0 deprecated.

= 5.1.4 =
Release date November 28, 2022
* New: added a filter to force a file check for WebP/AVIF if they were manually deleted from disk;
* Fix: if only small WebPs are available, include the JPG version in the `picture` tag to avoid blurry images;
* Fix: the notification about unlisted thumbnails incorrectly reported WebP and AVIF files;
* Fix: improved integration with WP Offload Media by including Retina images in virtual/offload file checks;
* Fix: if the main file was optimized but some thumbnails did not have WebP/AVIF, it was not displayed correctly in the UI;
* Fix: added a % margin when generating WebPs/AVIF, so that files that are only a few bytes larger are also generated;
* Fix: when running WP-CLI, the percentage of finished items in the total was calculated incorrectly;
* Fix: the settings page crashed in certain cases for new accounts;
* Tweak: various CSS fixes and improvements on the Media Library, especially for cases with many thumbnails;
* Language: 2 new strings added, 2 updated, 0 fuzzed, and 0 deprecated.

= 5.1.3 =
Release date November 9, 2022
* Fix: a typo related to Custom Media that caused an error when adding a new Custom Media folder;
* Fix: some minor cosmetic fixes on the settings and bulk processing pages for new plans;
* Fix: the notification about the ShortPixel column in List view is now displayed when you switch back to the Grid view in Media Library;
* Language: 1 new string added, 0 updated, 0 fuzzed, and 0 deprecated.

= 5.1.2 =
Release date November 7, 2022
* Fix: when converting PNG to JPG, the PNG path was saved in the post editor, which could result in broken images;
* Fix: the bulk restore of Custom Media was performed without saving it to the previous bulks history;
* Fix: various wording updates and fixes throughout the plugin code;
* Fix: PNG to JPG conversion failed under certain Windows environments due to wrong path construction;
* Fix: the plugin now works with thumbs that have a numeric name (e.g. `0`);
* Fix: on certain hosting restrictions, requesting a new API key caused a fatal error;
* Fix: the original image was not processed when thumbnail processing was turned off;
* Compat: added compatibility with the Uncode theme's adaptive images feature;
* Tweak: minor updates to the settings and Media Library layout for new plans that will be introduced soon;
* Tweak: added filter/constant that can be used by affiliates;
* Tweak: reworked plugin notification system to make it more robust and reliable;
* Language: 44 new strings added, 2 updated, 0 fuzzed, and 39 deprecated.

= 5.1.1 =
Release date October 20th, 2022
* Fix: a fatal error for PHP 7.2 and lower was discovered and fixed by @KZeni, thanks!
* Language: 0 new strings added, 0 updated, 0 fuzzed, and 0 deprecated.


= 5.1.0 =
Release date October 20th, 2022
* New: added SmartCropping, especially useful for eCommerce sites;
* New: if the WebP/AVIF files are larger than the JPG/PNG/GIF version, they are no longer generated to ensure that the smallest file is always delivered;
* Fix: various DB-related settings were adjusted for files with very long names and to keep AVIF/WebP optimization data correct;
* Fix: bulk processing history was lost when deleting the plugin;
* Fix: the file name in the bulk preview was added back;
* Fix: various situations and edge cases with WPML are now fixed;
* Fix: when a Custom Media item was excluded, there was no clear message next to it;
* Fix: added a check to prevent re-optimization when using bulk actions in the Media Library;
* Fix: the deactivation pop-up is also displayed in a multisite environment;
* Fix: minor wording and CSS fixes in the plugin settings and notifications;
* Fix: if there are still images to optimize and/or generate, all of them are counted and displayed correctly in the Media Library;
* Tweak: added check of necessary GD library functions to use PNG to JPG conversion;
* Compat: in some very special cases an error was triggered when the YITH Watermark Premium plugin was enabled;
* Language: 20 new strings added, 2 updated, 1 fuzzed, and 2 deprecated.

= 5.0.9 =
Release date August 29th, 2022
* Fix: one of the processing queues was flooded in certain situations, on sites with many concurrent editors;
* Fix: the file name was missing in the bulk processing preview;
* Fix: the queues were deleted when activating the plugin; now they are preserved and bulk processing can continue after updating/reactivating the plugin;
* Fix: retina backups were not removed when an image was deleted from the Media Library;
* Fix: NGG screen check caused processor to load on plugin/dashboard pages;
* Fix: stats were saved incorrectly when the plugin was deactivated;
* Fix: some PHP notices were displayed due to numbering format for Polish language;
* Fix: various minor fixes, error code handling and code cleanup;
* Fix: screenshots were updated to reflect the latest version of the plugin;
* Fix: updates to wording throughout the plugin and in the readme file;
* Language: 1 new string added, 0 updated, 0 fuzzed, and 1 deprecated.

= 5.0.8 =
Release date August 8th, 2022
* Fix: the `Previous Bulks` now displays the number of credits used instead of the number of Media Library items, to avoid confusion;
* Fix: the notification for migrating the old format of optimization information was not getting triggered anymore;
* Fix: excluded images and/or thumbnails can now be restored from the backup;
* Fix: added prevention for double database queries when checking if an item is already in the queue;
* Fix: the bulk restore and bulk migration of optimization data can now be done even if out of credits;
* Fix: reduced the number of database table checks done on wp-admin pages to the minimum possible;
* Fix: the out-of-quota message was not always showing up properly;
* Fix: the bulk migration of the optimization data now marks as optimized the images that have proper backups in place;
* Fix: the thousands separators are now displayed properly for all languages;
* Fix: the optimized/unoptimized Media Library filter has proper pagination and also works with WPML;
* Fix: in case the optimization percentage is an integer, drop the `.00` (83.00% -> 83%);
* Fix: improved the settings and bulk pages load time for sites with a huge number of items in the Media Library;
* Fix: properly save the optimization information even if the filename is huge;
* Fix: the `Optimize now` button wasn't showing up on Custom Media right after restoring an item from the backup;
* Fix: more fixes for multisite installs where the old `blogs.dir` folder structure is used;
* Fix: multiple fixes and improvements for WP-CLI, including more detailed embedded docs and examples;
* Fix: multiple fixes and improvements to the whole exclusions module;
* Fix: multiple fixes and improvements in handling how retina images are optimized;
* Fix: various small fixes and improvements to the debug mode of the plugin;
* Tweak: `CTRL+S` can now be used to save settings (you're welcome!);
* Tweak: added support for bulk processing via the processing hook;
* Tweak: various wording and text updates in the plugin and the readme file;
* Language: 10 new strings added, 8 updated, 0 fuzzed, and 2 obsoleted.

= 5.0.7 =
Release date July 26th, 2022
* Fix: the notification about credits used had some test data, resulting in wrong information (sorry again!);
* Language: 0 new strings added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 5.0.6 =
Release date July 25th, 2022
* Fix: the "Search and Migrate All" tool now contains a fix for many cases where the message "Could not create backup" shows up;
* Fix: a fatal error was crashing the plugin settings in PHP 7.2;
* Fix: in certain cases, the optimization was looping due to WooCommerce's thumbnail system;
* Fix: in some cases, WooCommerce as well as other plugins were returning a wrong thumbnail URL and this case was not treated properly;
* Fix: optimization wasn't working correctly for multisite installs with the very old `blogs.dir` setup;
* Fix: some notifications could not be properly dismissed (sorry for that!);
* Fix: the integration with WP Offload Media has been enhanced for the case where the media files are not stored anymore on the local server;
* Fix: some errors were showing up in certain cases where the next generation image delivery was active together with the WP Offload Media plugin;
* Fix: the error box was not showing up anymore at the end of the bulk processing, or it was displaying wrong counts;
* Fix: the "Optimize Now" action from the Custom Media had a wrong link;
* Fix: in some cases, the bulk processing wasn't displaying the correct step for migration/restore operations;
* Fix: the deactivation feedback was sent even if no selection was made in the pop-up;
* Fix: the optimized/unoptimized filter was also displaying private posts;
* Fix: various small fixes and code improvements to make the ShortPixel support team's lives easier;
* Tweak: added a "processing" message when a new action is manually requested by the user;
* Tweak: added a tool-tip for the number of items currently in the processing queue;
* Tweak: added the resize type (cover/contain) on the image edit screen;
* Language: 10 new strings added, 2 updated, 0 fuzzed, and 6 obsoleted.

= 5.0.5 =
Release date July 7th, 2022
* Fix: in some cases the legacy optimization data was not migrated properly, resulting in backup-related errors;
* Fix: added the possibility to redo the migration of the optimization data when the backups exist;
* Fix: significantly reduced the number of queries when WP Offload Media is in use, as this was causing slowness in some cases;
* Fix: the automatic processing now works correctly when using the block editor as well as on other pages where it was broken;
* Fix: the unlisted thumbnails were not processed correctly and showed up as not optimized;
* Fix: the integration with the Photo Engine and WP/LR Sync plugins works properly again;
* Fix: the filter in the Media Library was making the image name go away;
* Fix: changing the API Key now resets correctly the credits information;
* Fix: removed a persistent notification about a potential insufficient quota;
* Fix: the "Optimize now" button works correctly in Custom Media;
* Fix: the "Extend quota" button works correctly in the Media Library;
* Fix: other folders from the `wp-content/uplods` folder can now be added as Custom Media folders;
* Fix: the size exclusions were not working as expected for thumbnails;
* Fix: updated various pieces of code in accordance with the WordPress Coding Standards;
* Tweak: the wait time between checking if there is anything to optimize has been lowered;
* Tweak: added a `clear` function for WP-CLI, to clear the existing queue(s);
* Language: 3 new string added, 0 updated, 0 fuzzed, and 7 obsoleted.

= 5.0.4 =
Release date June 22nd, 2022
* Fix: some notifications could not be dismissed because of a jQuery error, kudos to @KZeni for the fix;
* Fix: a JS typo was preventing certain actions from completing in the Media Library;
* Fix: an error was showing up in the bulk when the legacy format date field was missing or incorrect;
* Language: 0 new string added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 5.0.3 =
Release date June 21st, 2022
* Fix: the plugin now recognizes the offloaded WebP/AVIF files, when they are not also present anymore on the server;
* Fix: in some cases, the bulk and manual optimization was stuck due to some errors related to the legacy optimization information;
* Fix: when saving the settings, the credits quota and other API-related data will be sent to the API, for faster sync;
* Fix: when having the backups turned off, a placeholder image was displayed instead of the original one;
* Fix: an empty space was sometimes shown on some pages, as a result of some dismissed notifications;
* Fix: various small fixes around the plugin processing engine, for increased speed and stability;
* Fix: updated various pieces of code in accordance with the WordPress Coding Standards;
* Language: 1 new string added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 5.0.2 =
Release date June 16th, 2022
* Fix: an uncaught error was fixed for the sites running without the `fileinfo` PHP extension that is needed by the plugin to get the mime type of the files;
* Fix: the resize switch from the settings wasn't properly working;
* Fix: a hidden modal in the dashboard was taking up a lot of empty space;
* Fix: some popups in the settings were always getting triggered in WordPress versions 5.5 and below;
* Fix: if the admin bar tooltip cannot load for any reason, let the JS processor continue its job;
* Fix: advancing from step 2 of the bulk process was sometimes blocked;
* Tweak: improved the notification text and updated the link around the legacy metadata migration;
* Tweak: the legacy conversion notification is now hidden when out of credits;
* Language: 0 new strings added, 3 updated, 0 fuzzed, and 0 obsoleted.

= 5.0.1 =
Release date June 14th, 2022
* Fix: a fatal error showed up in some cases right after updating the plugin, which is now fixed;
* Language: 0 new strings added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 5.0.0 =
Release date June 14th, 2022

We hope today is a lucky day because SPIO 5 is super cool, excellent, and faster. Now, bug-free! Just kidding :-) read on for the changelog and be kind to us in reporting issues. The dev team will be eternally grateful!
* New: this is a major rewrite of the plugin, where all the processing engine has been completely changed, as well as other major parts of the plugin;
* New: the optimization information is moved to custom tables in the database in order to avoid the situation when re-optimization occurs because ShortPixel optimization data was wiped;
* New: the whole bulk processing has been reworked and streamlined into a very nice 4 steps process, with more details and clarity about what is going to be processed;
* New: the JavaScript processor that is in charge of processing everything that needs to be optimized has been completely rewritten, adding more clarity and details;
* New: added WP-CLI support for most of the operations that can be performed with the plugin; please check the knowledge base for more details;
* New: due to the new bulk and JS processor, WebP and/or AVIF files can be generated without the need to re-optimize the whole Media Library;
* New: added more features for Custom Media, such as Cloudflare integration, displaying the internal ID for easier tracking, checks for permissions when adding new folders, and other smaller fixes;
* New: the settings were reorganized and refreshed, a Tools tab was added and tooltips are now available for an easier understanding of the functionalities;
* New: Breaking Change! regex exclusions are now moved to their own type `regex-name` and `regex-path`; if you are using regex exclusions please check them in detail and adjust as necessary;
* New: added the possibility for double AVIF extension that works in a similar manner to the double WebP extension;
* Tweak: removed `Process in the front-end` option due to performance issues; the same effect can now be achieved with WP-CLI commands;
* Tweak: Breaking Change! due to the code changes, some of the filters in version 4 are now deprecated; please check again your integrations if you used a filter in version 4;
* Tweak: removed the integration with Cloudflare Global API Key for security reasons, please use the Cloudflare Token instead;
* Fix: the image size is now updated correctly in the database (following the change in WordPress 6.0);
* Fix: in some cases, when running out of credits, the PDF upload wasn't possible;
* Fix: the optimized/unoptimized filter in Media Library works correctly now;
* Fix: a confirmation message shows up again when saving settings;
* Language: pretty much all strings were either added, updated, fuzzed, or obsoleted, therefore we didn't lose time in counting them; we hope you will understand.

= 4.22.10 =
Release date June 2nd, 2022
* Fix: updated all `add_query_arg` and `remove_query_arg` functions for enhanced security;
* Fix: in some cases, the offloading via WP Offload Media wasn't properly done when converting from PNG to JPG;
* Fix: PDF files weren't offloaded via WP Offload Media  when running out of credits;
* Fix: removed the backups folder calculation because it was making the settings page very slow in certain cases;
* Fix: removed the consumed credits from the statistics tab, because it wasn't working correctly;
* Fix: increased the default image resize options;
* Fix: a potential fatal error on PHP 8 was corrected;
* Tweak: added a new filter for the requests that are sent to the optimization API, documented above in the Developers section;
* Language: 0 new strings added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 4.22.9 =
Release date March 31st, 2022
* Fix: fixed the integration with the WP Media Offload plugin, which was broken in version 3.6.0;
* Fix: added support for offloading AVIF files via WP Media Offload;
* Fix: PDF files were not offloaded via WP Media Offload if the process PDF option wasn't enabled in SPIO;
* Fix: added support for delivering animated gif files as WebP when using the .htaccess method;
* Fix: the link for the plugin settings was leading to a 404 in the network admin of a multisite install;
* Tweak: added 2 new constants for adding the HTTP basic authentication credentials directly in wp-config.php;
* Tweak: added a notification in case of downgrading from the upcoming SPIO 5 version;
* Compat: added integration with Pantheon cache, thanks to @TrilipuT & @LogicEveryWhere;
* Language: 3 new strings added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 4.22.8 =
Release date February 8th, 2022
* Fix: an error was occurring on new installs when using PHP8;
* Fix: when uploading an image through Gutenberg's image block, the optimization wasn't getting triggered;
* Fix: wrong path for `picturefill.js` that was used only in certain cases on IE;
* Language: 0 new string added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 4.22.7 =
Release date January 17th, 2022
* Fix: switched all requests to the API to https to avoid insecure warnings;
* Fix: certain excludes by path were seen as regex-only and weren't processed correctly;
* Fix: the upgrade pop-up was not considering properly AVIF & WebP when proposing upgrade options;
* Fix: in certain cases, on Custom Media, there were some PHP Notices related to backups;
* Fix: AVIF files weren't removed when deleting an image from the Media Library;
* Fix: when the option to optimize images added in the front-end was enabled, some unnecessary calls to the backend were made in some cases;
* Language: 0 new string added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 4.22.6 =
Release date October 11th, 2021
* Fix: the plugin is now checking for the `UPLOADS` constant when building the paths on MultiSite installs;
* Fix: in certain specific cases, a fatal error was triggered when the backup couldn't be restored;
* Fix: if the automatic Media Library optimization is disabled, the plugin will also disable the front-end processing option;
* Fix: removed inaccurate statistics from the bulk screen summary until the next major release;
* Language: 0 new string added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 4.22.5 =
Release date August 31st, 2021
* Fix: in some cases, the MIME type of other files than images were wrongly set to `image/jpg`;
* Fix: when restoring from backup a PNG that was converted to JPG, the MIME type wasn't set back to `image/png`;
* Fix: in case backup fails for any reason, the image in discussion will be skipped (so the original one won't get overwritten);
* Language: 0 new string added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 4.22.4 =
Release date August 25th, 2021
* Compat: Added a notification system for the cases when AVIF files cannot be delivered with the current server/host settings;
* Compat: bumped the minimum supported PHP version to 5.6;
* Language: 5 new string added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 4.22.3 =
Release date July 28th, 2021
* Fix: Error when using WordPress 5.8 Widget editor;
* Fix: Error when using WP-Offload and WebP image could not be detected;
* Fix: PNG2JPG when using WP without date directory format would incorrectly add ./ to filename;
* Fix: Unregistered retina files could throw off optimization;
* Fix: Easy Watermark plugin changed its main file, so it couldn't be properly detected;
* Language: 0 new string added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 4.22.2 =
Release date May 12th, 2021
* Fix: the Bulk screen reflects better the extra credits used for WebP and/or AVIF creation;
* Language: 1 new string added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 4.22.1 =
Release date May 5th, 2021
* Fix: undefined variable notice;
* Fix: some strings had the wrong translation domain;
* Fix: WSO banner can now be hidden either with a constant or with a filter;
* Language: 0 new strings added, 0 updated, 0 fuzzed, and 0 obsoleted.

= 4.22.0 =
Release date April 28th, 2021
* New: ability to generate and serve the AVIF version of the images;
* New: WebP and AVIF files can now be delivered without conditioning of the generation of such files;
* Fix: Keep the `loading=lazy` attribute on `IMG` tags when delivering next-generation images using the `picture` method;
* Fix: Custom database tables were created without primary keys and that caused issues in some cases;
* Fix: Empty alt tag should not be stripped with WebP delivery;
* Fix: bug when using S3-offload in combination with Webp delivery;
* Fix: fixes, additions, and tweaks to the plugin notifications system;
* Language: 9 new strings added, 14 updated, 0 fuzzed, and 0 obsoleted.

= EARLIER VERSIONS =
* please refer to the <a href="https://github.com/short-pixel-optimizer/shortpixel-image-optimiser/blob/master/changelog.txt" target="_blank">changelog.txt</a> file inside the plugin archive.

== Upgrade Notice ==

= 5.0.0 =

* BIG UPDATE: This version is a major rewrite of the plugin. We strongly suggest you take a FULL BACKUP (DATABASE and IMAGES) before upgrading because there are multiple changes in the code and the optimization information is stored in a different way starting with this version.

= 4.22.9 =

* This version contains a fix for the WP Offload Media plugin version 2.6.0 and above. Please ensure you're running the latest WP Offload Media plugin and check that everything works correctly after upgrading.
