=== ShortPixel Image Optimizer === Contributors: ShortPixel Tags: compressor, image, compression, optimize, image optimizer, image optimiser, image compression, resize, compress pdf, compress jpg, compress png, image compression Requires at least: 3.2.0 Tested up to: 5.3 Requires PHP: 5.3 Stable tag: 4.15.2 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Speed up your website & boost your SEO by compressing old & new images and PDFs. WebP convert and optimize support. == Description == **A freemium easy to use, comprehensive, stable and frequently updated 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 optimizing any image or PDF document on your website. ShortPixel is an easy to use, lightweight, install-and-forget-about-it image optimization 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 here or here.** 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 NextGEN, Modula or added directly via FTP! Both lossy and lossless image compression are available for the most common image types (JPG, PNG, GIF and WebP) 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 image compression test on your site or compress some images to make sure they are to your liking. **Why is ShortPixel the best choice when it comes to image optimization or PDF compression?** * popular plugin with over 200,000 active installations according to WordPress * compress JPG, PNG, GIF (still or animated) images and also PDF documents * option to automatically convert PNG to JPG if that will result in smaller images. Ideal for large images in PNG format. * no file size limit * option to freely convert any JPEG, PNG or GIF (even animated ones!) to **WebP** for more Google love. How to enable WebP? * option to include the generated WebP images into the front-end pages by using the <picture> tag instead of <img> * compatible with WP Retina 2x - all **retina images** are automatically compressed. How to benefit from Retina displays? * optimize thumbnails as well as featured images. You can also **select individual thumbnails to exclude** from optimization. * ability to optimize any image on your site including images in **NextGEN Gallery** and any other image galleries or sliders * integrates with Gravity Forms post_image field type optimizing the images upon upload * featured images can be automatically resized before being optimized with 2 different options. No need for additional plugins like Imsanity * CMYK to RGB conversion * **24h stellar support** (24/7) directly from developers. * easily **test lossy/lossless** versions of the images with a single click in your Media Library * **great for photographers**: keep or remove EXIF data from your images, compress images with lossless option * works well with both HTTPS and HTTP websites * 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 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 * compatible with WP Engine hosted websites and all the major hosting providers * compatible with WPML and WPML Media plugins * skip already optimized images * compatible with watermarking plugins * option to deactivate auto-optimizing images on upload * images that are optimized less that 5% are bonus * WooCommerce, WP offload S3 and WP Stateless compatible * 40 days optimization report with all image details and overall statistics * We are GDPR compliant! Read more. * **free optimization credits for non-profits**, contact us 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 our prices. > **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 50/50 affiliate program. **Get in touch!** * Email https://shortpixel.com/contact * Twitter https://twitter.com/shortpixel * Google+ https://www.google.com/+Shortpixelpage * Facebook https://www.facebook.com/ShortPixel * LinkedIn https://www.linkedin.com/company/shortpixel == Installation == Let's get ShortPixel plugin running on your WordPress website: 1. Sign up using your email at https://shortpixel.com/wp-apikey 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 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)? = ShortPixel has better compression rates, more features, supports backups and has very affordable one-time plans. If you are serious about making an informed decision please take 10 minutes and read this article. = 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! = 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 both past and new images? = Sure! You can optimize all your past/current images 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 3, 5 or more associated thumbs. Each optimized thumb requires a credit. In the rare cases when ShortPixel does not optimize 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 viceversa. = What types of formats can be optimized? = ShortPixel optimizes JPEG, PNG, GIF and PDF type of files. = Do you have one-time plans? = Yes we do. The credits that come with our one-time plans 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 light-weight 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 optimized versions. = Do you optimize the images in cloud? = Yes, all the images processsed 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 PayPal and card. = 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 in 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', '<>'); 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 a hundred million 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 are a bit more expensive. Check out our prices here = 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 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: https://shortpixel.com/api-tools = Can I use ShortPixel WP plugin on a localhost installation? = Unfortunately not :-( But you can use either our command line tool or our web tool https://shortpixel.com/web-tool-docs https://shortpixel.com/cli-docs = How does resizing work? = If you choose the option to resize your images 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 contact us and we'll assist you with that. = I’m stuck. What do I do? = The ShortPixel team is here to help. Contact us! == 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 > 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. > 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 optimization, $URLs is a plain array > apply_filters('shortpixel/db/chunk_size', $chunk); //the $chunk is the value ShortPixel chooses to use as number of selected records in one query (based on total table size), some hosts work better with a different value 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); will tell the plugin to create double extensions for the WebP image counterparts, for example image.jpg.webp for image.jpg define("SHORTPIXEL_NOFLOCK", true); // don't use flock queue, only activate this when you have flock() denied errors on your installation. . define("SHORTPIXEL_EXPERIMENTAL_SECURICACHE", true); // adds timestamps to URLS, to prevent hitting the cache. Useful for persistent caches. == 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 API key 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 your stats: number of processed files, saved space, average compression, saved bandwidth, remaining images. (Settings>ShortPixel) 7. Check images optimization status, restore or reoptimize the image. (Media>Library) 8. Check image optimization details. (Media>Library->Edit) 9. Check other optimized images status - themes or other plugins' images. (Media>Other Media) == Changelog == = 4.15.2 = Release date: 28th November 2019 * Fix for is_null error and "Call to undefined method ShortPixel\ShortPixelPlugin::alterHtaccess" in some cases. * Language – 0 new strings added, 0 updated, 0 fuzzied, and 0 obsoleted = 4.15.1 = Release date: 27th November 2019 * Fix the infamous T_PAAMAYIM_NEKUDOTAYIM error on PHP 5.3 with WP Offload Media compat. module. * Language – 0 new strings added, 0 updated, 0 fuzzied, and 0 obsoleted = 4.15.0 = Release date: 27th November 2019 * Ask if WebP files should be created before bulk optimization : checkbox added in Bulk page. * Added filters for optimal chunk size when selecting records from wp_postmeta while bulk processing: 'shortpixel/db/chunk_size'. * Optimize images also on edit-media screen. * Experimental support for static cache firewalls, and sending images w/ timestamp: SHORTPIXEL_EXPERIMENTAL_SECURICACHE. * Limit loading of JS / CSS to pages we do work on. * Refactoring & speed optimizations: - new external class for gravity forms, nextgen and visual composer, new controller for global admin hooks, new front controller, updated plugin init, clean(ish) root file, database optimization(reduced number of queries), unlistedThumbs checker only fires when the optimize unlisted check is active, optimizations for filesystem and findFileByPattern. * WPML Duplicates - Don't mark empty GUID's as duplicate. * Fix broken styles on WP 5.3. * Fix in case meta_value in processCountable has a WP_Error object instead of normal metadata. * Fix on WP Engine when large wp_postmeta table: limit to 16K the size of the query with ID list. * Fixed: error when log path is not writeable * Fixed: double sends within the same images, can happen with something like WPML and it's duplicated media. * Fixed: bug when searching unlisted images, in some circumstances. * Fixed: max_execution_time when time is set lower than 0. * Fixed: directories with no permission would give PHP error * Fixed: pathToUrl now also works for paths outside wp uploads * Fixed: check for DOING_AJAX on redirect to settings. * Fixed: Shortpixel icon + exclamation mark in toolbar showing on every page load. * Fixed: Add Custom media browser doesn't display files anymore * Fixed: WebP option adds an extra border if image already has a border -> borders will not be replicated to tags. * Fixed: Validating empty key doesn't show any message. * Fixed: on Nginx writes .htaccess files. * Fixed: Bug with safeGetAttachmentUrl for URLs that start with //. * Fixed: New S3-Offload version breaks Shortpixel and offloading. * Fixed: get_attached_file when S3-Offload is active, breaks other plugins. * Fixed: crash when doing .htaccess files ( WP 5.3 specific ). * Fixed: double file occurences on png2jpg in conjunction with s3offload. * Language – 1 new strings added, 0 updated, 0 fuzzied, and 0 obsoleted = 4.14.6 = Release date: 9th October 2019 * Don't convert to <picture> the <img>s with backgrounds. * Remove unused eval() call. * Restore the validate button next to API Key but change label to "Save and validate" * Fixed: PNGtoJPG issue with already uploaded images * Fixed: finding wrong unlisted thumbnails due to regex. * Fixed: fatal error when trying to delete crashed attachement ( without proper URL ) * Fix for S3 offload - PNG2JPG , doesn't remove old JPG files * Fixed: S3Offload will not offload anymore when 'Copy files to bucket' is off ( and object was not previously offloaded ) * S3Offload doesn't offload via optimiser anymore if this setting is off * Fixed: cutting out initial offload if optimization needs to be done, when autolibrary is on * Fix for PNG2JPG - JPG files remained in backupdir. * Small fix for remote download thumbnails * Fixed: notice in filemodel due meta-facade feeding array * Fixed: bug in File2Url in filesystemcontroller * Fixed: download issue in attempt to remote download * Language – 0 new strings added, 1 updated, 0 fuzzied, and 0 obsoleted = 4.14.5 = Release date: 29th August 2019 * If constant SHORTPIXEL_USE_DOUBLE_WEBP_EXTENSION is defined as true, use double extension for WebP (.jpg.webp) * Fixed: Javascript - String.prototype causes errors on React apps * Fixed: Undefined page load when using ShortPixel and Divi preloaded images * Fixed: Offload Media - When removing PNG2JPG converted file, the files / folder are not removed. * Fixed: When the constant that enables using double extensions for WebP (.jpg.webp) is active, the webp's are found as unlisted thumbnails and sent to optimization. * Fixed: missing call to apply_filters('shortpixel_image_exists'...) on a particular case. * Language – 0 new strings added, 1 updated, 0 fuzzied, and 0 obsoleted = 4.14.4 = Release date: 19th August 2019 * Check if unlisted thumbnails present for already optimized images (in case the thumbnails were added later) in Media Library list and when doing bulk. This also integrates with the Unicode plugin. * If JSON PHP module not present, add a proper error * Fixed: bulk error "WordPress database error You have an error in your SQL syntax" on some installs * Fixed: Warning: count() Parameter must be an array. * Language – 0 new strings added, 0 updated, 0 fuzzied, and 0 obsoleted == 4.14.3 == Release date: 22nd July 2019 * Compatibility with Flywheel hosting by not using flock if Flywheel detected * When using the PICTURE tag to deliver WebP, keep the width and height at level * Refactoring of the API Key settings page, refactoring of Other media * Performance improvements for selecting from large wp_posts and wp_postmeta tables when doing bulk optimization * Display a message when bulk is skipping many processed images, if bulk processing is ran again. * Fixed: Other media - Recompress adds "Preserve CMYK" * Fixed: duplicate error message when validating wrong API key * Conflict message: align the text vertically and provide space between text and button when displayed on any admin page * Fixed: Other media Restore fails when original file is readable, not writable == 4.14.2 == Release date: 1st July 2019 * add the possibility to define custom infixes for thumbnails (like image-uai-150x150.jpg for image.jpg) - comma separated define SHORTPIXEL_CUSTOM_THUMB_INFIXES == 4.14.1 == Release date: 17th June 2019 * Fix errors when DOMDocument not present == 4.14.0 == Release date: 17th June 2019 * Add new filters proposed by WP Stateless: shortpixel_backup_folder, shortpixel_image_exists, shortpixel_image_urls * Better placement of the elements on the Other Media page * Fix custom bulk for PDFs when the pdf thumbnails are not activated * Fix selecting items from DB twice for bulk in some circumstances * Warn user that converting PNG to JPG while keeping EXIF in options doesn't keep it (no EXIF for PNGs). * When SHORTPIXEL_DEBUG=x get parameter is provided, display a floating link to the shortpixel_log file * Adaptive Max execution time and capped to 90 sec. for the bulk background AJAX calls. (Kinsta has a max_execution_time of 300 sec. in PHP but the HTTP connection is cut after 180 sec.) * Fix custom 404 page for missing images not working when using .htaccess for WebP * Fix WebP picture tag with relative URLs not working in some circumstances * Fix replacing the inside an existing tag with another tag. * Clear SP optimization cache in order to be able to optimize an image which initially had permissions error, after changing the permissions. * Fix being able to list the contents of ShortpixelBackups on some badly configured servers. * Fix error when inputting D'Artagnan in the AUTH pass field of settings. * Add the Quriobot for support. = 4.13.1 = Release date: 16th April 2019 * fix thumbnail optimization when a thumbnail was replaced with another one * better integration with Regenerate Thumbnails Advanced = 4.13.0 = Release date: 10th April 2019 * Bulk restore for the Other Media * make the filename extension be updated when manually optimizing a PNG from Media Library, if the convert to JPG is active, without refreshing the page * Integration with Regenerate Thumbnails Advanced new 2.0 beta version * Add the rules for WebP in the WP-CONTENT .htaccess * ShortPixel Other Media - display the time of optimization in the grid and offer option to sort by it * Keep sort order when optimizing / refreshing page on Other Media * offer the visual comparer for Other Media too * resolve the Settings inconsistency in Other Media (settings displayed were from when adding the folder not from when actually optimizing) * Make pressing Escape or clicking outside of any popup close it. * Fixed: Restoring an Other Media item and then Optimizing it again optimizes it Lossless * fix generating the WebP tags when the images are either on a subdomain or on a CDN domain having the same root domain as the main site. = EARLIER VERSIONS = * please refer to the changelog.txt file inside the plugin archive.