{"id":195258,"date":"2024-06-20T07:09:28","date_gmt":"2024-06-20T07:09:28","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/media-offloader-by-wpfitter\/"},"modified":"2026-03-11T11:11:33","modified_gmt":"2026-03-11T11:11:33","slug":"advanced-media-offloader","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/advanced-media-offloader\/","author":7721721,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"4.4.1","stable_tag":"4.4.1","tested":"6.9.4","requires":"5.6","requires_php":"8.1","requires_plugins":null,"header_name":"Advanced Media Offloader","header_author":"WP Fitter","header_description":"Offload WordPress media to Amazon S3, DigitalOcean Spaces, Min.io or Cloudflare R2.","assets_banners_color":"829baa","last_updated":"2026-03-11 11:11:33","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/buymeacoffee.com\/wpfitter?utm_source=wp-plugin&utm_medium=readme&utm_campaign=advanced-media-offloader&utm_content=readme-donate","header_plugin_uri":"https:\/\/wpfitter.com\/plugins\/advanced-media-offloader\/","header_author_uri":"https:\/\/wpfitter.com\/","rating":4.8,"author_block_rating":0,"active_installs":4000,"downloads":37992,"num_ratings":44,"support_threads":9,"support_threads_resolved":8,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.0":{"tag":"2.0.0","author":"masoudin","date":"2024-12-06 16:54:48"},"2.0.1":{"tag":"2.0.1","author":"masoudin","date":"2024-12-06 20:47:12"},"2.0.2":{"tag":"2.0.2","author":"masoudin","date":"2024-12-07 06:35:56"},"2.0.3":{"tag":"2.0.3","author":"masoudin","date":"2024-12-08 06:09:59"},"2.1.0":{"tag":"2.1.0","author":"masoudin","date":"2024-12-14 05:42:35"},"3.0.0":{"tag":"3.0.0","author":"masoudin","date":"2024-12-31 12:48:52"},"3.1.0":{"tag":"3.1.0","author":"masoudin","date":"2025-01-22 04:29:50"},"3.2.0":{"tag":"3.2.0","author":"masoudin","date":"2025-01-27 11:40:45"},"3.3.0":{"tag":"3.3.0","author":"masoudin","date":"2025-02-28 08:41:25"},"3.3.1":{"tag":"3.3.1","author":"masoudin","date":"2025-02-28 15:41:23"},"3.3.2":{"tag":"3.3.2","author":"masoudin","date":"2025-03-19 11:16:12"},"3.3.3":{"tag":"3.3.3","author":"masoudin","date":"2025-04-13 11:21:22"},"3.3.4":{"tag":"3.3.4","author":"masoudin","date":"2025-05-05 07:41:19"},"3.3.5":{"tag":"3.3.5","author":"masoudin","date":"2025-07-16 06:44:30"},"4.0.0":{"tag":"4.0.0","author":"masoudin","date":"2025-08-02 09:23:10"},"4.0.1":{"tag":"4.0.1","author":"masoudin","date":"2025-09-10 13:19:12"},"4.0.2":{"tag":"4.0.2","author":"masoudin","date":"2025-09-14 15:01:00"},"4.0.3":{"tag":"4.0.3","author":"masoudin","date":"2025-09-21 12:44:53"},"4.1.0":{"tag":"4.1.0","author":"masoudin","date":"2025-10-16 16:31:40"},"4.1.1":{"tag":"4.1.1","author":"masoudin","date":"2025-11-06 21:04:09"},"4.2.0":{"tag":"4.2.0","author":"masoudin","date":"2025-11-15 11:22:58"},"4.2.1":{"tag":"4.2.1","author":"masoudin","date":"2025-11-24 06:01:35"},"4.2.2":{"tag":"4.2.2","author":"masoudin","date":"2025-12-06 13:17:59"},"4.2.3":{"tag":"4.2.3","author":"masoudin","date":"2025-12-11 13:49:19"},"4.3.0":{"tag":"4.3.0","author":"masoudin","date":"2025-12-18 08:03:40"},"4.3.1":{"tag":"4.3.1","author":"masoudin","date":"2026-01-06 07:38:20"},"4.4.0":{"tag":"4.4.0","author":"masoudin","date":"2026-03-04 10:10:22"},"4.4.1":{"tag":"4.4.1","author":"masoudin","date":"2026-03-11 11:11:33"}},"upgrade_notice":{"4.4.1":"<p>Fixed custom image sizes being replaced with the full-size URL in page builder content.<\/p>","4.4.0":"<p>New compatibility with Imagify and EWWW Image Optimizer for WebP\/AVIF offloading.<\/p>","4.3.1":"<p>New <code>advmo_object_acl<\/code> filter allows disabling ACLs for providers like Cloudflare R2 or AWS S3 buckets with ACLs disabled.<\/p>","4.3.0":"<p>New visual badges in Media Library show offload status at a glance. Cloud icon for offloaded files, warning icon for failed uploads.<\/p>","4.0.0":"<p>This update fixes admin notices display issues on the Media Overview page for a cleaner admin experience.<\/p>","1.0.0":"<p>Initial release. Please provide feedback and report any issues through the support forum.<\/p>"},"ratings":{"1":2,"2":1,"3":0,"4":0,"5":41},"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3213156,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3213156,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":3213156,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3484502,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3484502,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.0","2.0.1","2.0.2","2.0.3","2.1.0","3.0.0","3.1.0","3.2.0","3.3.0","3.3.1","3.3.2","3.3.3","3.3.4","3.3.5","4.0.0","4.0.1","4.0.2","4.0.3","4.1.0","4.1.1","4.2.0","4.2.1","4.2.2","4.2.3","4.3.0","4.3.1","4.4.0","4.4.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3215336,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3338730,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3338730,"resolution":"3","location":"assets","locale":""},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3338729,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Plugin settings page - Configure your cloud storage settings and offload options.","2":"Media Overview page - Media Overview and Bulk Offload","3":"Attachment details page - View the offload status of individual media files."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[3882,233,46891,217,2216],"plugin_category":[50,59],"plugin_contributors":[228831,91887,237259,228742],"plugin_business_model":[],"class_list":["post-195258","plugin","type-plugin","status-publish","hentry","plugin_tags-cloudflare","plugin_tags-media-library","plugin_tags-offload","plugin_tags-s3","plugin_tags-storage","plugin_category-media","plugin_category-utilities-and-tools","plugin_contributors-bahreynipour","plugin_contributors-masoudin","plugin_contributors-teledark","plugin_contributors-wpfitter","plugin_committers-masoudin"],"banners":{"banner":"https:\/\/ps.w.org\/advanced-media-offloader\/assets\/banner-772x250.png?rev=3484502","banner_2x":"https:\/\/ps.w.org\/advanced-media-offloader\/assets\/banner-1544x500.png?rev=3484502","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/advanced-media-offloader\/assets\/icon.svg?rev=3213156","icon":"https:\/\/ps.w.org\/advanced-media-offloader\/assets\/icon.svg?rev=3213156","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/advanced-media-offloader\/assets\/screenshot-1.png?rev=3215336","caption":"Plugin settings page - Configure your cloud storage settings and offload options."},{"src":"https:\/\/ps.w.org\/advanced-media-offloader\/assets\/screenshot-2.png?rev=3338730","caption":"Media Overview page - Media Overview and Bulk Offload"},{"src":"https:\/\/ps.w.org\/advanced-media-offloader\/assets\/screenshot-3.png?rev=3338730","caption":"Attachment details page - View the offload status of individual media files."},{"src":"https:\/\/ps.w.org\/advanced-media-offloader\/assets\/screenshot-4.jpg?rev=3338729","caption":""}],"raw_content":"<!--section=description-->\n<p><strong>Advanced Media Offloader<\/strong> helps you optimize your WordPress media handling by automatically uploading your media files to S3-compatible cloud storage services.<\/p>\n\n<p>Struggling with server space limitations? Want to improve your site's performance by serving media through a CDN? This plugin handles the technical work of migrating your media to the cloud, rewriting URLs, and maintaining compatibility with your existing content.<\/p>\n\n<h4>Key Benefits<\/h4>\n\n<ul>\n<li>Reduce server storage requirements and costs<\/li>\n<li>Decrease server load when serving media files<\/li>\n<li>Improve global site loading speeds when combined with CDN services<\/li>\n<li>Maintain full compatibility with WordPress media functions<\/li>\n<li>No need to modify existing content - URLs are automatically rewritten<\/li>\n<\/ul>\n\n<h4>Supported Cloud Providers<\/h4>\n\n<ul>\n<li><strong>Amazon S3<\/strong> - The industry standard object storage service<\/li>\n<li><strong>Cloudflare R2<\/strong> - S3-compatible storage with zero egress fees<\/li>\n<li><strong>DigitalOcean Spaces<\/strong> - Simple object storage from DigitalOcean<\/li>\n<li><strong>Backblaze B2<\/strong> - Affordable S3-compatible storage with predictable pricing<\/li>\n<li><strong>Wasabi<\/strong> - Hot cloud storage with predictable pricing<\/li>\n<li><strong>MinIO<\/strong> - Any S3-compatible storage (MinIO, OVHcloud Object Storage, Scaleway, Linode, Vultr, IBM COS, and more)<\/li>\n<\/ul>\n\n<p>Not sure which provider to choose? Check our <a href=\"https:\/\/wpfitter.com\/blog\/best-cloud-storage-for-wordpress-media-pricing-comparison\/?utm_source=wp-plugin&amp;utm_medium=readme&amp;utm_campaign=advanced-media-offloader&amp;utm_content=pricing-comparison\">cloud storage pricing comparison<\/a> for real-world cost breakdowns.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li><strong>Automatic Offloading<\/strong> - New media uploads are automatically sent to your cloud storage<\/li>\n<li><strong>Smart Policies<\/strong> - Create advanced rules to control exactly which files are offloaded and when, giving you granular control over your storage. (<a href=\"https:\/\/wpfitter.com\/blog\/implementing-smart-retention-policies-with-advanced-media-offloader\/?utm_source=wp-plugin&amp;utm_medium=readme&amp;utm_campaign=advanced-media-offloader&amp;utm_content=smart-policies\">Learn more<\/a>)<\/li>\n<li><strong>Bulk Migration &amp; WP CLI<\/strong> - Easily move existing media to the cloud with powerful command-line support for bulk operations and automation (<a href=\"https:\/\/wpfitter.com\/blog\/advmo-bulk-offload-with-wp-cli?utm_source=wp-plugin&amp;utm_medium=readme&amp;utm_campaign=advanced-media-offloader&amp;utm_content=bulk-offload-cli\">Learn more<\/a>)<\/li>\n<li><strong>Thumbnail Regeneration Compatibility<\/strong> - Compatible with WP-CLI <code>wp media regenerate<\/code> command and the Regenerate Thumbnails plugin. Regenerated thumbnails automatically offload to cloud storage. Note: Not compatible with Full Cloud Migration retention policy.<\/li>\n<li><strong>Smart URL Rewriting<\/strong> - All media URLs are automatically rewritten to serve from cloud storage<\/li>\n<li><strong>File Versioning<\/strong> - Add unique timestamps to media paths to prevent caching issues<\/li>\n<li><strong>Flexible Retention<\/strong> - Choose to keep local copies or remove them after successful offloading<\/li>\n<li><strong>Mirror Deletion<\/strong> - Optionally remove files from cloud storage when deleted from WordPress<\/li>\n<li><strong>Custom Paths<\/strong> - Configure custom path prefixes in your cloud storage<\/li>\n<li><strong>Image Optimizer Compatibility<\/strong> - Works with <a href=\"https:\/\/wordpress.org\/plugins\/webp-uploads\/\">Modern Image Formats<\/a> (recommended), Imagify, and EWWW Image Optimizer. Optimized WebP and AVIF files are automatically offloaded alongside originals. (<a href=\"https:\/\/wpfitter.com\/blog\/ewww-imagify-support-added-to-advanced-media-offloader\/?utm_source=wp-plugin&amp;utm_medium=readme&amp;utm_campaign=advanced-media-offloader&amp;utm_content=image-optimizer-compatibility\">Learn more<\/a>)<\/li>\n<li><strong>Developer-Friendly<\/strong> - Extensive action and filter hooks for extending functionality (<a href=\"https:\/\/wpfitter.com\/documents\/advanced-media-offloader\/development-hooks\/?utm_source=wp-plugin&amp;utm_medium=readme&amp;utm_campaign=advanced-media-offloader&amp;utm_content=developer-hooks\">View Documentation<\/a>)<\/li>\n<\/ul>\n\n<h4>Developer Documentation<\/h4>\n\n<p>For developers looking to extend or customize the plugin behavior, we provide comprehensive documentation for all available hooks:<\/p>\n\n<p><strong><a href=\"https:\/\/wpfitter.com\/documents\/advanced-media-offloader\/development-hooks\/?utm_source=wp-plugin&amp;utm_medium=readme&amp;utm_campaign=advanced-media-offloader&amp;utm_content=developer-hooks\">View Developer Hooks Documentation \u2192<\/a><\/strong><\/p>\n\n<p>Quick example - skip offloading files larger than 5MB:<\/p>\n\n<pre><code>add_filter('advmo_should_offload_attachment', function($should_offload, $attachment_id) {\n    $file = get_attached_file($attachment_id);\n    if ($file &amp;&amp; filesize($file) &gt; 5 * 1024 * 1024) {\n        return false;\n    }\n    return $should_offload;\n}, 10, 2);\n<\/code><\/pre>\n\n<h3>Configuration<\/h3>\n\n<p>For security, cloud provider credentials are stored in your <code>wp-config.php<\/code> file rather than the database.<\/p>\n\n<p><strong>Note:<\/strong> Domain and endpoint URLs will automatically be prefixed with <code>https:\/\/<\/code> if you don't include it, but we recommend always including the full URL for clarity.<\/p>\n\n<p><strong><a href=\"https:\/\/developers.cloudflare.com\/r2\/\">Cloudflare R2<\/a> Configuration<\/strong><\/p>\n\n<pre><code>    define('ADVMO_CLOUDFLARE_R2_KEY', 'your-access-key');\n    define('ADVMO_CLOUDFLARE_R2_SECRET', 'your-secret-key');\n    define('ADVMO_CLOUDFLARE_R2_BUCKET', 'your-bucket-name');\n    define('ADVMO_CLOUDFLARE_R2_DOMAIN', 'your-domain-url');\n    define('ADVMO_CLOUDFLARE_R2_ENDPOINT', 'your-endpoint-url');\n<\/code><\/pre>\n\n<p><strong><a href=\"https:\/\/www.digitalocean.com\/products\/spaces\">DigitalOcean Spaces<\/a> Configuration<\/strong><\/p>\n\n<pre><code>    define('ADVMO_DOS_KEY', 'your-access-key');\n    define('ADVMO_DOS_SECRET', 'your-secret-key');\n    define('ADVMO_DOS_BUCKET', 'your-bucket-name');\n    define('ADVMO_DOS_DOMAIN', 'your-domain-url');\n    define('ADVMO_DOS_ENDPOINT', 'your-endpoint-url');\n<\/code><\/pre>\n\n<p><strong><a href=\"https:\/\/min.io\/docs\/minio\/linux\/administration\/identity-access-management\/minio-user-management.html\">MinIO<\/a> Configuration<\/strong><\/p>\n\n<p>Use this for any storage that supports the S3 API via a custom endpoint (e.g., MinIO, OVHcloud Object Storage, Scaleway, Linode, Vultr, IBM COS). Select this if your provider isn't listed separately.<\/p>\n\n<pre><code>    define('ADVMO_MINIO_KEY', 'your-access-key');\n    define('ADVMO_MINIO_SECRET', 'your-secret-key');\n    define('ADVMO_MINIO_BUCKET', 'your-bucket-name');\n    define('ADVMO_MINIO_DOMAIN', 'your-domain-url');\n    define('ADVMO_MINIO_ENDPOINT', 'your-endpoint-url');\n    define('ADVMO_MINIO_PATH_STYLE_ENDPOINT', false); \/\/ Optional. Set to true if your MinIO server requires path-style URLs (most self-hosted MinIO setups). Default is false.\n    define('ADVMO_MINIO_REGION', 'your-bucket-region'); \/\/ Optional. Set your MinIO bucket region if needed. Default is 'us-east-1'.\n<\/code><\/pre>\n\n<p><strong><a href=\"https:\/\/aws.amazon.com\/s3\/\">Amazon S3<\/a> Configuration<\/strong><\/p>\n\n<pre><code>    define('ADVMO_AWS_KEY', 'your-access-key');\n    define('ADVMO_AWS_SECRET', 'your-secret-key');\n    define('ADVMO_AWS_BUCKET', 'your-bucket-name');\n    define('ADVMO_AWS_REGION', 'your-bucket-region');\n    define('ADVMO_AWS_DOMAIN', 'your-domain-url');\n<\/code><\/pre>\n\n<p><strong><a href=\"https:\/\/www.backblaze.com\/apidocs\/introduction-to-the-s3-compatible-api\">Backblaze B2<\/a> Configuration<\/strong><\/p>\n\n<pre><code>    define('ADVMO_BACKBLAZE_B2_KEY', 'your-application-key-id');\n    define('ADVMO_BACKBLAZE_B2_SECRET', 'your-application-key');\n    define('ADVMO_BACKBLAZE_B2_BUCKET', 'your-bucket-name');\n    define('ADVMO_BACKBLAZE_B2_REGION', 'your-bucket-region');\n    define('ADVMO_BACKBLAZE_B2_DOMAIN', 'your-domain-url');\n    define('ADVMO_BACKBLAZE_B2_ENDPOINT', 'your-endpoint-url');\n<\/code><\/pre>\n\n<p><strong><a href=\"https:\/\/docs.wasabi.com\/docs\/creating-a-new-access-key\">Wasabi<\/a> Configuration<\/strong><\/p>\n\n<pre><code>    define('ADVMO_WASABI_KEY', 'your-access-key');\n    define('ADVMO_WASABI_SECRET', 'your-secret-key');\n    define('ADVMO_WASABI_BUCKET', 'your-bucket-name');\n    define('ADVMO_WASABI_REGION', 'your-bucket-region');\n    define('ADVMO_WASABI_DOMAIN', 'your-domain-url');\n<\/code><\/pre>\n\n<h3>Using the S3 PHP SDK<\/h3>\n\n<p>The Advanced Media Offloader utilizes the AWS SDK for PHP to interact with S3-compatible cloud storage. This powerful SDK provides an easy-to-use API for managing your cloud storage operations, including file uploads, downloads, and more. The SDK is maintained by Amazon Web Services, ensuring high compatibility and performance with S3 services.<\/p>\n\n<p>For more information about the AWS SDK for PHP, visit:\n<a href=\"https:\/\/aws.amazon.com\/sdk-for-php\/\">https:\/\/aws.amazon.com\/sdk-for-php\/<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/advanced-media-offloader\/<\/code> or install directly through WordPress<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Go to \"Media Offloader\" in the admin menu to configure settings<\/li>\n<li>Add your cloud provider credentials to <code>wp-config.php<\/code> (see configuration examples below)<\/li>\n<li>Test your connection and start offloading media<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20support%20other%20cloud%20storage%20platforms%3F\"><h3>Does this plugin support other cloud storage platforms?<\/h3><\/dt>\n<dd><p>Currently supports Amazon S3, Backblaze B2, Cloudflare R2, DigitalOcean Spaces, MinIO &amp; Wasabi. Additional providers are on the roadmap based on user demand.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20the%20media%20files%20already%20uploaded%20on%20my%20server%3F\"><h3>What happens to the media files already uploaded on my server?<\/h3><\/dt>\n<dd><p>Existing files remain untouched until you explicitly use the bulk offload feature. New uploads are automatically processed based on your settings.<\/p><\/dd>\n<dt id=\"how%20exactly%20does%20url%20rewriting%20work%3F\"><h3>How exactly does URL rewriting work?<\/h3><\/dt>\n<dd><p>The plugin hooks into WordPress core media functions using <code>wp_get_attachment_url<\/code> and related filters. This ensures compatibility with themes, plugins, and core functions without modifying database URLs.<\/p><\/dd>\n<dt id=\"can%20i%20rollback%20if%20needed%3F\"><h3>Can I rollback if needed?<\/h3><\/dt>\n<dd><p>Files offloaded with \"Retain Local Files\" can be served locally by deactivating the plugin. For full cloud migrations, you'll need to re-download media files if you want to revert.<\/p><\/dd>\n<dt id=\"how%20are%20image%20sizes%20and%20thumbnails%20handled%3F\"><h3>How are image sizes and thumbnails handled?<\/h3><\/dt>\n<dd><p>All generated image sizes are offloaded alongside the original. URL rewriting works for all sizes and srcset attributes.<\/p><\/dd>\n<dt id=\"will%20this%20work%20with%20page%20builders%20and%20media-heavy%20plugins%3F\"><h3>Will this work with page builders and media-heavy plugins?<\/h3><\/dt>\n<dd><p>Yes, since the plugin uses WordPress core hooks for URL rewriting, it's compatible with Elementor, Beaver Builder, WooCommerce, and most other plugins that use standard WordPress media functions.<\/p><\/dd>\n<dt id=\"does%20it%20support%20private%20files%20with%20access%20control%3F\"><h3>Does it support private files with access control?<\/h3><\/dt>\n<dd><p>The free version only supports publicly accessible files. Private files with authenticated access may be added in a future premium version.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20remove%20a%20media%20file%20from%20the%20wordpress%20media%20library%3F\"><h3>What happens if I remove a media file from the WordPress Media Library?<\/h3><\/dt>\n<dd><p>With \"Mirror Delete\" enabled, corresponding cloud files are automatically removed. Otherwise, files remain in cloud storage, potentially creating orphaned objects.<\/p><\/dd>\n<dt id=\"how%20can%20i%20debug%20issues%20with%20file%20offloading%3F\"><h3>How can I debug issues with file offloading?<\/h3><\/dt>\n<dd><p>The plugin logs errors to attachment metadata. Check the Media Overview page for detailed error reporting or enable WordPress debug logging for more information.<\/p><\/dd>\n<dt id=\"what%27s%20the%20recommended%20bucket%20configuration%3F\"><h3>What's the recommended bucket configuration?<\/h3><\/dt>\n<dd><p>For optimal performance:\n1. Enable CORS configuration\n2. Set appropriate public read permissions\n3. Configure proper region (closest to your audience)\n4. Consider using a CDN for global distributions<\/p><\/dd>\n<dt id=\"how%20do%20i%20configure%20public%20access%20for%20my%20bucket%3F\"><h3>How do I configure public access for my bucket?<\/h3><\/dt>\n<dd><p>By default, the plugin sets <code>public-read<\/code> ACL on uploaded objects. However, some providers don't support ACLs, and AWS S3 has ACLs disabled by default on new buckets since April 2023. You should configure bucket-level public access using your provider's bucket policies.<\/p>\n\n<p>If you encounter <code>AccessControlListNotSupported<\/code> errors or need to disable ACLs, add the following code to your theme's <code>functions.php<\/code> or a custom plugin:<\/p>\n\n<pre><code>add_filter('advmo_object_acl', '__return_false');\n<\/code><\/pre><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.4.1<\/h4>\n\n<ul>\n<li>Fixed: Custom\/intermediate image sizes in src attribute being replaced with the full-size URL when using page builders like Elementor<\/li>\n<\/ul>\n\n<h4>4.4.0<\/h4>\n\n<ul>\n<li>Added: Imagify compatibility for WebP\/AVIF offloading<\/li>\n<li>Added: EWWW Image Optimizer compatibility<\/li>\n<\/ul>\n\n<h4>4.3.2<\/h4>\n\n<ul>\n<li>Fixed: Visual Composer compatibility - resolved PHP TypeError caused by strict type hints on admin_enqueue_scripts callbacks<\/li>\n<\/ul>\n\n<h4>4.3.1<\/h4>\n\n<ul>\n<li>Added: <code>advmo_object_acl<\/code> filter to customize or disable object-level ACL permissions<\/li>\n<\/ul>\n\n<h4>4.3.0<\/h4>\n\n<ul>\n<li>Added: New visual badges in Media Library show offload status at a glance. Cloud icon for offloaded files, warning icon for failed uploads.<\/li>\n<li>Added: Visual \"Deleting...\" loading indicator with spinner in Media Library attachment modal when deleting offloaded media<\/li>\n<li>Added: Offload status filter dropdown in Media Library for quick filtering by offload state.<\/li>\n<li>Improved: Optimized cloud deletion performance using batched deleteObjects API (up to 1000 keys per request) for faster deletion of attachments with multiple sizes<\/li>\n<li>Fixed: MinIO \u201cUse Path-Style Endpoint\u201d now correctly respects boolean <code>wp-config.php<\/code> constants (e.g. <code>define('ADVMO_MINIO_PATH_STYLE_ENDPOINT', true);<\/code>).<\/li>\n<\/ul>\n\n<h4>4.2.3<\/h4>\n\n<ul>\n<li>Fixed: TypeError when uploading non-image files (SVG, ZIP, PDF)<\/li>\n<\/ul>\n\n<h4>4.2.2<\/h4>\n\n<ul>\n<li>Added: Compatibility with WordPress 6.9<\/li>\n<li>Added: Full Compatibility with <a href=\"https:\/\/wordpress.org\/plugins\/webp-uploads\/\">Modern Image Formats<\/a><\/li>\n<li>Fixed: Minor changes and improvements<\/li>\n<\/ul>\n\n<h4>4.2.1<\/h4>\n\n<ul>\n<li>Fix: Checkbox states for credential fields now properly persist when unchecked<\/li>\n<li>Fix: Deletion failure when WordPress year\/month folders are disabled<\/li>\n<\/ul>\n\n<h4>4.2.0<\/h4>\n\n<ul>\n<li>New: Added compatibility for thumbnail regeneration with WP-CLI <code>wp media regenerate<\/code> command and the Regenerate Thumbnails plugin. Regenerated thumbnails now automatically offload to cloud storage. Note: This feature does not work with Full Cloud Migration retention policy.<\/li>\n<li>New: Added the ability to configure cloud provider credentials through the WordPress admin settings page while maintaining backward compatibility with wp-config.php constants. Constants take priority and disable corresponding fields when defined.<\/li>\n<li>New: Added setting to toggle automatic cloud offloading for new uploads<\/li>\n<li>New: Added customizable Name field S3-compatible providers to identify specific storage services (e.g., MinIO, OVHcloud, Scaleway). Default is \"MinIO\" with backward compatibility for existing installations.<\/li>\n<li>Fix: Minor changes and improvements<\/li>\n<\/ul>\n\n<h4>4.1.1<\/h4>\n\n<ul>\n<li>New: Added Backblaze B2 support - affordable S3-compatible cloud storage with predictable pricing<\/li>\n<li>Improved: Automatic URL normalization - Domain and endpoint URLs are now automatically prefixed with <code>https:\/\/<\/code> if missing, eliminating common configuration errors<\/li>\n<\/ul>\n\n<h4>4.1.0<\/h4>\n\n<ul>\n<li>New: Added <code>advmo_cloud_providers<\/code> filter to allow adding, removing, or customizing the list of available cloud providers<\/li>\n<li>New: Added Unique Filename Protection - UniqueFilenameObserver automatically prevents file overwrites when full cloud migration is enabled<\/li>\n<li>New: Added domain filters for developers to programmatically modify CDN\/custom domains for each provider (<code>advmo_aws_domain<\/code>, <code>advmo_cloudflare_r2_domain<\/code>, <code>advmo_dos_domain<\/code>, <code>advmo_minio_domain<\/code>, <code>advmo_wasabi_domain<\/code>)<\/li>\n<li>New: Added <code>advmo_should_upload_original_image<\/code> filter to control whether original images should be uploaded to cloud (default: true)<\/li>\n<li>Fix: Original images are now correctly uploaded to and deleted from cloud storage alongside scaled versions<\/li>\n<li>Fix: Background processes that could get stuck now have proper recovery mechanisms<\/li>\n<li>Fix: Disabled <code>use_aws_shared_config_files<\/code> option across all S3-compatible providers to prevent potential conflicts and security issues<\/li>\n<\/ul>\n\n<h4>4.0.3<\/h4>\n\n<ul>\n<li>Fixed memory exhaustion and fatal errors when handling offloaded SVG files.<\/li>\n<\/ul>\n\n<h4>4.0.2<\/h4>\n\n<ul>\n<li>Improved SVG support and fixed issues with Elementor SVG icons after offloading.<\/li>\n<\/ul>\n\n<h4>4.0.1<\/h4>\n\n<ul>\n<li>feat: add advmo_should_offload_attachment filter to conditionally skip offloading<\/li>\n<\/ul>\n\n<h4>4.0.0<\/h4>\n\n<ul>\n<li>Added: WP CLI command <code>wp advmo offload<\/code> for bulk operations and automation (<a href=\"https:\/\/wpfitter.com\/blog\/advmo-bulk-offload-with-wp-cli\">Learn more<\/a>)<\/li>\n<li>Added: Individual \"Offload Now\" button in attachment edit screen for on-demand offloading<\/li>\n<li>Added: Retry functionality for failed offloads with dedicated \"Retry Offload\" button<\/li>\n<li>Fixed: Admin notices from other plugins now properly disabled on Media Overview page<\/li>\n<li>Improved: Enhanced admin interface consistency across all plugin pages<\/li>\n<\/ul>\n\n<h4>3.3.5<\/h4>\n\n<ul>\n<li>Fixed: Minor improvements and bug fixes<\/li>\n<\/ul>\n\n<h4>3.3.4<\/h4>\n\n<ul>\n<li>Fixed: Minor improvements and bug fixes<\/li>\n<li>Updated: WordPress compatibility improvements<\/li>\n<\/ul>\n\n<h4>3.3.3<\/h4>\n\n<ul>\n<li>Fixed: Use original file's directory for sized image deletion, resolving an issue where thumbnails in older uploads weren't being deleted properly<\/li>\n<li>Fixed: Corrected a bug in the mirror delete functionality ensuring cloud files are properly removed when local files are deleted<\/li>\n<li>Added: HTTPS protocol requirement notices for domain and endpoint URLs for improved security<\/li>\n<li>Refactored: Standardized plugin settings approach for better code maintainability<\/li>\n<li>Optimized: Improved bulk processing with direct SQL queries for better performance<\/li>\n<li>Fixed: Added proper nonce verification and capability checks to all AJAX endpoints for enhanced security<\/li>\n<li>Fixed: Preserved checkbox values during settings sanitization to prevent settings from being inadvertently reset<\/li>\n<\/ul>\n\n<h4>3.3.2<\/h4>\n\n<ul>\n<li>Improved accessibility and consistency in admin interface<\/li>\n<li>Added RTL stylesheet and conditional loading for better localization support<\/li>\n<li>Fixed minor bugs and made improvements.<\/li>\n<\/ul>\n\n<h4>3.3.1<\/h4>\n\n<ul>\n<li>Fixed minor bugs and made improvements.<\/li>\n<\/ul>\n\n<h4>3.3.0<\/h4>\n\n<ul>\n<li>Added service container and dependency injection architecture<\/li>\n<li>Improved connection testing with better error handling<\/li>\n<li>Fixed bulk offload process to prevent stuck operations<\/li>\n<li>Enhanced UI with clearer cloud provider selection<\/li>\n<li>Improved documentation with detailed provider setup instructions<\/li>\n<\/ul>\n\n<h4>3.2.0<\/h4>\n\n<ul>\n<li>Added support for Wasabi cloud storage<\/li>\n<li>Enhanced plugin performance and stability<\/li>\n<li>Fix minor bugs<\/li>\n<\/ul>\n\n<h4>3.1.0<\/h4>\n\n<ul>\n<li>Fixed and optimized connection test button functionality<\/li>\n<li>Fixed minor bugs and made improvements.<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>Introduced a new user interface (UI) and improved user experience (UX) for the settings page.<\/li>\n<li>Added functionality to offload and sync edited images with cloud storage.<\/li>\n<li>Improved bulk offloading to cloud storage by fixing various bugs.<\/li>\n<li>Implemented error logging for bulk offload operations.<\/li>\n<li>Added ability to download a CSV file with detailed logs for attachments that encountered errors during offloading.<\/li>\n<li>Enhanced overall security of the plugin.<\/li>\n<li>Fixed various issues related to bulk offload JavaScript functionality.<\/li>\n<li>Improved error handling and notifications for media attachments in the library.<\/li>\n<li>Refactored attachment deletion methods for better performance and reliability.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Implemented php-scoper to isolate AWS PHP SDK namespaces, preventing conflicts with other plugins using different versions of the same packages.<\/li>\n<li>Fixed minor bugs and made improvements.<\/li>\n<\/ul>\n\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>Fixed minor bugs and made improvements.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Display offloaded version of images in post content when already offloaded to improve loading times and reduce bandwidth usage.<\/li>\n<li>Fixed the srcset attribute not displaying for images when object versioning is enabled.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Fixed minor bugs and made improvements.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Refactored the Advanced Media Offloader codebase.<\/li>\n<li>Added new action hooks for custom actions before and after critical operations.<\/li>\n<li>Fixed compatibility issue with the Performance Lab WordPress plugin.<\/li>\n<li>Fixed a bug in bulk offloading media files.<\/li>\n<li>Added support for MinIO path-style endpoint configuration using the ADVMO_MINIO_PATH_STYLE_ENDPOINT constant.<\/li>\n<li>Fixed minor bugs and made improvements.<\/li>\n<\/ul>\n\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Refactored the code base to improve maintainability and readability, resulting in enhanced performance across the plugin.<\/li>\n<li>Resolved an issue where the bulk offload process would become unresponsive<\/li>\n<li>Added a button to cancel the bulk offload process, providing users with greater control during file transfers.<\/li>\n<\/ul>\n\n<h4>1.5.2<\/h4>\n\n<ul>\n<li>Fix a minor bug related to the path of existing media files when deleting local files.<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li>Fix minor bugs to improve bulk offload process<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Added support for Amazon S3 cloud storage<\/li>\n<li>Enhanced plugin performance and stability<\/li>\n<li>Fix minor bugs<\/li>\n<\/ul>\n\n<h4>1.4.5<\/h4>\n\n<ul>\n<li>Fix minor bugs with Min.io<\/li>\n<\/ul>\n\n<h4>1.4.4<\/h4>\n\n<ul>\n<li>New Feature: Custom Path Prefix for Cloud Storage<\/li>\n<li>Fix minor bugs<\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li>Add Version to Bucket Path: Automatically add unique timestamps to your media file paths to ensure the latest versions are always delivered<\/li>\n<li>Add Mirror Delete: Automatically delete local files after successful upload to Cloud Storage.<\/li>\n<li>Improve Settings UI: Enhanced the user interface of the settings page.<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Added 'Sync Local and Cloud Deletions' feature to automatically remove media from cloud storage when deleted locally.<\/li>\n<li>Enhanced WooCommerce compatibility: Added support for WooCommerce-specific image sizes and optimized handling of product images.<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Fix minor bugs related to Bulk offloading the existing media files<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Added bulk offload feature for media files (50 per batch in free version)<\/li>\n<li>Fixed subdir path issue for non-image files<\/li>\n<li>UI Improvements<\/li>\n<li>Fixed minor bugs<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>UI Improvements<\/li>\n<li>Fixed minor bugs<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added MinIO as a new cloud storage provider<\/li>\n<li>Introduced an option to choose if local files should be deleted after offloading to cloud storage<\/li>\n<li>Implemented UI improvements for the plugin settings page<\/li>\n<li>Added Offload status to Attachment details section in Media Library<\/li>\n<li>Fixed minor bugs<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Improved the code base to fix some issues<\/li>\n<li>Added support for DigitalOcean Spaces<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Save server space &amp; speed up your site by automatically offloading media to Amazon S3, Cloudflare R2 &amp; more.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/195258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=195258"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/masoudin"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=195258"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=195258"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=195258"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=195258"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=195258"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=195258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}