=== EWWW Image Optimizer === Contributors: nosilver4u Donate link: https://ewww.io/donate/ Tags: optimize, image, convert, webp, resize, compress, lazy load, optimization, lossless, lossy, seo, scale Requires at least: 5.3 Tested up to: 5.6 Requires PHP: 5.6 Stable tag: 6.0.3 License: GPLv3 Smaller Images, Faster Sites, Happier Visitors. Comprehensive image optimization that doesn't require a degree in rocket science. == Description == Are you frustrated by a slow website? Do over-sized images make you say "ewww"... Let EWWW Image Optimizer help you make your site faster, improve your bounce rate, and boost your SEO. But most importantly, make your visitors happier so they keep coming back for more. With EWWW IO you can optimize all your existing images, [from any plugin](https://docs.ewww.io/article/84-plugin-compatibility), and then let EWWW IO take care of new image uploads automatically. **Why use EWWW Image Optimizer?** 1. **No Speed Limits** and [unlimited file size](https://ewww.io/unlimited-file-size/). 1. **Smooth Handling** with pixel-perfect optimization using industry-leading tools and progressive rendering. 1. **High Torque** as we bring you the best compression/quality ratio available with our Premium compression for JPG, PNG, and PDF files. 1. **Adaptive Steering** with intelligent conversion options to get the right image format for the job (JPG, PNG, GIF, or WebP). 1. **Free Parking** The core plugin is free and always will be. However, our paid services offer up to 80% compression, and a [host of other features](https://ewww.io/plans/)! 1. **Comprehensive Coverage:** no image gets left behind, optimize everything on your site, not just the WordPress Media Library. 1. **Safety First:** all communications are secured with top SSL encryption. 1. **Roadside Assistance:** top-notch support is in our DNA. While API customers get top priority, we answer [every single support question with care](https://ewww.io/contact-us/). 1. **Pack a Spare:** free image backups store your original images for 30 days. EWWW IO is the only plugin that lets you optimize images using tools on your own server (jpegtran, optipng, pngout, pngquant, gifsicle, cwebp). If you feel the need for more speed, get more compression and offload the CPU-intensive process of optimization to [our specialized servers](https://ewww.io/plans/). = Automatic Everything = With Easy IO, images are automatically compressed, scaled to fit the page and device size, lazy loaded, and converted to the next-gen WebP format. = Support = Stuck? Feeling like maybe you DO need that rocket science degree? [We provide free one-on-one email support to everyone](https://ewww.io/contact-us/). Do you have an idea to make EWWW IO even better? [Share it and vote on future features](https://feedback.ewww.io/)! Found a bug? Report the issue on [GitHub](https://github.com/nosilver4u/ewww-image-optimizer), and we'll get it fixed! = Bulk Optimize = Optimize all your images from a single page. This includes the Media Library, your theme, and a handful of pre-configured folders (see Optimize Everything Else below). GRAND FlaGallery, NextCellent and NextGEN have their own Bulk Optimize pages. = Optimize Everything Else = Configure any folder within your WordPress install to be optimized. The Bulk Optimizer will compress theme images, BuddyPress avatars, BuddyPress Activity Plus images, Meta Slider slides, WP Symposium Pro avatars, GD bbPress attachments, Grand Media Galleries, and any user-specified folders. You can also use Scheduled optimization or run the optimizer from WP-CLI if that's more your thing. = Plugin Compatibility = EWWW IO has been tested with hundreds (if not thousands) of [plugins and themes](https://docs.ewww.io/article/84-plugin-compatibility), here are just a few of the most common ones: BuddyPress (Activity Plus add-on too), Cloudinary, Easy Watermark, FooGallery, GD bbPress Attachments, GRAND FlAGallery, Gmedia Photo Gallery, MediaPress, Meta Slider, Microsoft Azure Storage, MyArcadePlugin, NextGEN Gallery, Regenerate Thumbnails, WP Offload Media, [WPML](https://wpml.org/plugin/ewww-image-optimizer/), WP Retina 2x, WP RSS Aggregator, WP Symposium. [Read more...](https://docs.ewww.io/article/84-plugin-compatibility) = WebP Images = If you want simple, get automatic WebP conversion with Easy IO, and be done with it! Otherwise, you can generate WebP versions of your images with the Bulk Optimizer, and deliver them to supported browsers. Take your pick between Apache-style rewrite rules, JS WebP Rewriting, and WebP Rewriting. EWWW IO even works with the WebP option in the Cache Enabler plugin from KeyCDN. = WP-CLI = Allows you to run all Bulk Optimization processes from your command line, instead of the web interface. It is much faster, and allows you to do things like run it in 'screen' or via regular cron (instead of wp-cron, which can be unpredictable on low-traffic sites). Install WP-CLI from wp-cli.org, and run 'wp-cli.phar help ewwwio optimize' for more information or see the [Docs](https://docs.ewww.io/article/25-optimizing-with-wp-cli). = CDN Support = [WP Offload Media](https://wordpress.org/plugins/amazon-s3-and-cloudfront/) is the officially supported (and recommended) plugin for uploads to Amazon S3, Digital Ocean Spaces, and Google Cloud Storage. [Check our compatibility list for details on other plugins](https://docs.ewww.io/article/84-plugin-compatibility). All pull mode CDNs like Cloudflare, KeyCDN, MaxCDN, and Sucuri CloudProxy work automatically, but will require you to purge the cache after a bulk optimization. = Translations = Huge thanks to all our translators, [see the full list](https://translate.wordpress.org/projects/wp-plugins/ewww-image-optimizer/contributors)! If you would like to help translate this plugin, [join the team](https://translate.wordpress.org/projects/wp-plugins/ewww-image-optimizer). [Signup to receive updates when new strings are available for translation](https://ewww.io/register/). == Installation == 1. Upload the "ewww-image-optimizer" plugin to your /wp-content/plugins/ directory. 1. Activate the plugin through the 'Plugins' menu in WordPress. 1. The plugin will attempt to install jpegtran, optipng, and gifsicle automatically for you. This requires that the wp-content folder is writable by the user running the web server. 1. If the binaries don't run locally, you may sign up for cloud-based optimization: https://ewww.io/plans/ 1. *Recommended* Visit the settings page to enable/disable specific tools and turn on advanced optimization features. 1. Done! If these steps do not work, [see the additional documentation](https://docs.ewww.io/article/6-the-plugin-says-i-m-missing-something). If you need further assistance using the plugin, please visit our [Support Page](https://ewww.io/contact-us/). = Webhosts = To find out if your webhost works with the EWWW Image Optimizer, you can check the [official list](https://docs.ewww.io/article/43-supported-web-hosts). == Frequently Asked Questions == = Google Pagespeed says my images need compressing or resizing, but I already optimized all my images. What do I do? = Try this for starters: [https://docs.ewww.io/article/5-pagespeed-says-my-images-need-more-work](https://docs.ewww.io/article/5-pagespeed-says-my-images-need-more-work) = The plugin complains that I'm missing something, what do I do? = This article will walk you through installing the required tools (and the alternatives if installation does not work): [https://docs.ewww.io/article/6-the-plugin-says-i-m-missing-something](https://docs.ewww.io/article/6-the-plugin-says-i-m-missing-something) = Does the plugin replace existing images? = Yes, but only if the optimized version is smaller. The plugin should NEVER create a larger image. = Can I resize my images with this plugin? = Yes, you can, set it up on the Resize tab. = Can I lower the compression setting for JPGs to save more space? = Our premium compression can determine the ideal quality setting and give you the best results, but you may also adjust the default quality for conversion and resizing. [Read more...](https://docs.ewww.io/article/12-jpq-quality-and-wordpress) = The bulk optimizer doesn't seem to be working, what can I do? = See [https://docs.ewww.io/article/39-bulk-optimizer-failure](https://docs.ewww.io/article/39-bulk-optimizer-failure) for full troubleshooting instructions. = What are the supported operating systems? = I've tested it on Windows (with Apache), Linux, Mac OSX, FreeBSD, and Solaris. The cloud API will work on any OS. = I want to know more about image optimization, and why you chose these options/tools. = That's not a question, but since I made it up, I'll answer it. See this resource: [https://developers.google.com/web/tools/lighthouse/audits/optimize-images](https://developers.google.com/web/tools/lighthouse/audits/optimize-images) == Screenshots == 1. Plugin settings page. 2. Additional optimize column added to media listing. You can see your savings, manually optimize individual images, and restore originals (converted only). 3. Bulk optimization page. You can optimize all your images at once and resume a previous bulk optimization. This is very useful for existing blogs that have lots of images. == Changelog == * Feature requests can be viewed and submitted on our [feedback portal](https://feedback.ewww.io) * If you would like to help translate this plugin in your language, [join the team](https://translate.wordpress.org/projects/wp-plugins/ewww-image-optimizer/) = 6.0.3 = * fixed: syntax error on PHP 7.2 or less = 6.0.2 = * security: new version of PNGOUT available on settings page (if enabled) * added: compatibility with Phoenix Media Rename plugin * changed: Easy IO supports img tags with SVG images * fixed: bulk optimizer gives incorrect message about not enough credits for unlimited plans * fixed: db install workaround for MariaDB 10.4 bug * fixed: errors with custom db setups when DB_* constants are not defined * fixed: error with JS WebP when a class attribute with no value is encountered = 6.0.1 = * changed: more reliable Cloudflare detection for WebP delivery methods * fixed: lazy load for external CSS breaking div elements in JS/JSON * fixed: call to undefined function from Imsanity * fixed: database upgrade check triggers error on MySQL 8.0.17+ * fixed: delete originals tool is slow * fixed: wpdb error when attempting to run migration routine for fresh installs = 6.0.0 = * added: tool to delete originals from WP 5.3+ auto-scaling behavior (Tools menu) * added: JS WebP recognizes video elements added via JS (e.g. infinite scroll) * added: automatically convert GIF to PNG during new uploads, unless animated * added: JS WebP and picture WebP auto-detect configuration for S3 Uploads and WP Stateless * added: Lazy Load for external CSS and separate style blocks (div elements only for now) * added: Easy IO/CDN rewriting for Ultimate Member AJAX-powered activity wall * changed: settings UI revamped with wizard for first-time installs * changed: automatic PNG to JPG threshold lowered to 250kb * changed: extensions for WP_Image_Editor now disabled by default, use EWWW_IMAGE_OPTIMIZER_ENABLE_EDITOR constant to enable them * changed: JS WebP can be used with picture WebP + Lazy Load to support CSS background images * changed: better compatibility with Theia Smart Thumbnails * changed: Lazy Load auto-sizing will no longer decrease the image size, only increasing is allowed * changed: filter to include additional HTML element types via eio_allowed_background_image_elements filter for Lazy Load and Easy IO * fixed: compatibility between Easy IO and Autoptimize * fixed: Easy IO uses hard crop when constraining an image via a width/height found in the style attribute * fixed: Easy IO uses hard-coded wp-content/ and wp-includes/ paths in some cases * fixed: Easy IO not activating properly when plugin is activated network-wide for multi-site installs * fixed: database upgrade throws errors on MariaDB 10.4.x * fixed: WebP .htaccess error in Vary header rule * fixed: Easy IO doubles part of image URL when there are no thumbnails, but one is requested by a plugin or theme * fixed: Easy IO minifier breaks Beaver Builder * fixed: Lazy Load breaks Beaver Builder text editor * removed: JS defer with Easy IO, use SWIS Performance instead: https://ewww.io/swis/ = 5.8.2 = * security: improper nonce verification for Nextgen bulk optimizer initialization (minor severity) * changed: Easy IO verification performed via API for better reliability * fixed: Easy IO missing https availability for admin-ajax.php requests when home_url is using plain http * fixed: Easy IO silently fails to rewrite URLs when using CNAME with WP Offload Media * fixed: wp_lazy_loading_enabled filter should have 3 parameters * fixed: Easy IO shows alert for domain change when a non-default WPML language is active * fixed: JS WebP does not auto-detect WP Offload Media CNAME = 5.8.1 = * fixed: Easy IO parser has typo in $webp_quality variable = 5.8.0 = * added: SVG optimization, huge thanks to @samsk for making this happen! * added: WebP quality setting, changed default to 75 * fixed: Lazy Load and other front-end parsers breaks JSON-encoded img elements * fixed: Easy IO adds excess markup for images with height and/or width set to 'auto' * fixed: memory_limit check should be case-insensitive: g vs. G * fixed: PHP error during detection of Cache Enabler's WebP option * fixed: table upgrade routine error when primary key already exists * fixed: deleting files by always using realpath, props @ocean90 * fixed: Easy IO skips images in AJAX Load More requests = 5.7.1 = * added: alert on domain change for Easy IO, like if you clone from a production environment to staging * changed: Easy IO domain and plan_id refresh automatically when visiting settings page * changed: better JS WebP and WPBakery Page Builder compatibility * changed: restore savings gauge for network settings page * fixed: resize detection visible for editors, should be admin-only * fixed: (force) re-optimize not working with parallel mode * fixed: upload error when WP cannot load image editor = 5.7.0 = * added: cleanup tool if you no longer need local WebP copies of images * added: resizing results displayed in bulk & single optimization report * changed: The browser-native portion of the Lazy Load feature obeys the wp_lazy_loading_enabled filter * fixed: plugin tables do not have PRIMARY indexes * fixed: Third-party plugins sometimes set erroneous WebP quality values * fixed: Show Re-optimized Images lists images in reverse order * fixed: cannot skip to last page of re-optimized images * fixed: Scheduled Optimizer skips files that need scaling/resizing if they have already been compressed * fixed: Lazy Load placeholders not rewritten for CDN usage by Autoptimize and WP Offload Media Assets Add-on = Earlier versions = Please refer to the separate changelog.txt file. == Credits == Written by [Shane Bishop](https://ewww.io) with special thanks to my [Lord and Savior](https://www.iamsecond.com/). Based upon CW Image Optimizer, which was written by [Jacob Allred](http://www.jacoballred.com/) at [Corban Works, LLC](http://www.corbanworks.com/). CW Image Optimizer was based on WP Smush.it. Jpegtran is the work of the Independent JPEG Group. PEL is the work of Martin Geisler, Lars Olesen, and Erik Oskam. Easy IO and HTML parsing classes based upon the Photon module from Jetpack.