[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fEj--U9bmd8vuGPxze96BySwpkQmISkZ91Z82-ah5uSU":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":23,"download_link":24,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27,"vulnerabilities":28,"developer":29,"crawl_stats":26,"alternatives":34,"analysis":130,"fingerprints":504},"tp-media-offload-edge-cdn","TP Media Offload & Edge CDN","1.0.0","thachpn165","https:\u002F\u002Fprofiles.wordpress.org\u002Fthachpn165\u002F","\u003Cp>\u003Cstrong>TP Media Offload & Edge CDN\u003C\u002Fstrong> is a powerful WordPress plugin that offloads your media files to Cloudflare R2 object storage and serves them through Cloudflare’s global CDN network with automatic image optimization.\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>R2 Storage Integration\u003C\u002Fstrong> – Seamlessly upload media to Cloudflare R2 with S3-compatible API\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Automatic Offload\u003C\u002Fstrong> – New uploads are automatically offloaded to R2\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bulk Offload\u003C\u002Fstrong> – Offload existing media library with configurable batch size\u003C\u002Fli>\n\u003Cli>\u003Cstrong>CDN Delivery\u003C\u002Fstrong> – Serve media through Cloudflare’s global CDN network\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Image Optimization\u003C\u002Fstrong> – Automatic WebP\u002FAVIF conversion via Cloudflare Image Transformations\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Responsive Images\u003C\u002Fstrong> – Smart srcset generation with preset breakpoints (320, 640, 768, 1024, 1280, 1536)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Quality Control\u003C\u002Fstrong> – Configurable image quality (1-100)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Worker Auto-Deploy\u003C\u002Fstrong> – One-click Cloudflare Worker deployment for image processing\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WooCommerce Support\u003C\u002Fstrong> – Full integration with product images and galleries\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Background Processing\u003C\u002Fstrong> – Queue-based processing with WP Cron (Action Scheduler supported)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Media Library Integration\u003C\u002Fstrong> – Status column, bulk actions, and row actions\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WP-CLI Support\u003C\u002Fstrong> – Command line interface for bulk operations and automation\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Requirements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WordPress 6.0 or higher\u003C\u002Fli>\n\u003Cli>PHP 8.0 or higher\u003C\u002Fli>\n\u003Cli>Cloudflare account with R2 storage enabled\u003C\u002Fli>\n\u003Cli>R2 bucket with public access or custom domain\u003C\u002Fli>\n\u003Cli>Cloudflare API Token (for Worker deployment)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>How It Works\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Configure your R2 credentials (Account ID, Access Key, Secret Key, Bucket)\u003C\u002Fli>\n\u003Cli>Set up your CDN URL (R2 public domain or custom domain)\u003C\u002Fli>\n\u003Cli>Enable auto-offload or use bulk offload for existing media\u003C\u002Fli>\n\u003Cli>Plugin automatically rewrites URLs to serve from CDN\u003C\u002Fli>\n\u003Cli>Cloudflare Worker handles image transformations on-the-fly\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>Security\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>API credentials encrypted with AES-256-CBC + HMAC\u003C\u002Fli>\n\u003Cli>Rate limiting on settings saves\u003C\u002Fli>\n\u003Cli>Nonce verification on all AJAX requests\u003C\u002Fli>\n\u003Cli>Capability checks for all admin operations\u003C\u002Fli>\n\u003Cli>Secure uninstall (wipes all sensitive data)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Performance\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Batch processing to prevent memory exhaustion\u003C\u002Fli>\n\u003Cli>Transient caching for dashboard stats\u003C\u002Fli>\n\u003Cli>Conditional asset loading\u003C\u002Fli>\n\u003Cli>Background queue processing\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Build and Generated Assets\u003C\u002Fh4>\n\u003Cp>This plugin includes compiled frontend assets in:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>assets\u002Fjs\u002Fadmin.js\u003C\u002Fcode> and \u003Ccode>assets\u002Fjs\u002Fpublic.js\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>assets\u002Fcss\u002Fadmin.css\u003C\u002Fcode> and \u003Ccode>assets\u002Fcss\u002Fpublic.css\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Source files are included in the same plugin package:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>JavaScript source: \u003Ccode>assets\u002Fsrc\u002Fjs\u002Fadmin.js\u003C\u002Fcode>, \u003Ccode>assets\u002Fsrc\u002Fjs\u002Fpublic.js\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>SCSS source: \u003Ccode>assets\u002Fsrc\u002Fscss\u002Fadmin.scss\u003C\u002Fcode>, \u003Ccode>assets\u002Fsrc\u002Fscss\u002Fpublic.scss\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Build steps used to generate compiled files:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Ccode>npm install\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>npm run build\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Development watch mode:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>npm run dev\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>External services\u003C\u002Fh3>\n\u003Cp>This plugin connects to Cloudflare services to offload media and deliver files via CDN.\u003C\u002Fp>\n\u003Ch4>Cloudflare R2 Object Storage\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>What it is used for:\u003C\u002Fstrong> Store and serve media objects.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Data sent:\u003C\u002Fstrong> Account ID, Access Key ID, Secret Access Key, bucket name, file paths, and media file contents.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>When data is sent:\u003C\u002Fstrong> During connection testing, single\u002Fbulk offload, restore, and local-file cleanup actions.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Service provider:\u003C\u002Fstrong> Cloudflare, Inc.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Terms of Service:\u003C\u002Fstrong> https:\u002F\u002Fwww.cloudflare.com\u002Fwebsite-terms\u002F\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy Policy:\u003C\u002Fstrong> https:\u002F\u002Fwww.cloudflare.com\u002Fprivacypolicy\u002F\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Cloudflare API (Workers and DNS)\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>What it is used for:\u003C\u002Fstrong> Deploy\u002Fremove Workers, validate DNS records, and enable DNS proxy for CDN routing.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Data sent:\u003C\u002Fstrong> API token, account ID, zone ID, DNS record ID, worker configuration, and configured CDN domain.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>When data is sent:\u003C\u002Fstrong> When you click Deploy Worker, Remove Worker, Validate DNS, or Enable Proxy.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Service provider:\u003C\u002Fstrong> Cloudflare, Inc.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Terms of Service:\u003C\u002Fstrong> https:\u002F\u002Fwww.cloudflare.com\u002Fwebsite-terms\u002F\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Privacy Policy:\u003C\u002Fstrong> https:\u002F\u002Fwww.cloudflare.com\u002Fprivacypolicy\u002F\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Privacy Policy\u003C\u002Fh3>\n\u003Cp>This plugin:\u003Cbr \u002F>\n* Stores your Cloudflare API credentials encrypted in your WordPress database\u003Cbr \u002F>\n* Uploads your media files to your Cloudflare R2 bucket\u003Cbr \u002F>\n* Sends required API data directly to Cloudflare services to provide plugin functionality\u003Cbr \u002F>\n* Does not include any tracking or analytics\u003C\u002Fp>\n\u003Cp>Your data stays between your WordPress site and your Cloudflare account.\u003C\u002Fp>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>For support, feature requests, or bug reports:\u003Cbr \u002F>\n* Visit \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Ftp-media-offload-edge-cdn\u002F\" rel=\"ugc\">WordPress support forum\u003C\u002Fa>\u003Cbr \u002F>\n* Create an issue on GitHub (coming soon)\u003C\u002Fp>\n\u003Ch3>Credits\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Built with AWS SDK for PHP for R2 compatibility\u003C\u002Fli>\n\u003Cli>Uses WP Cron for background processing (Action Scheduler compatible)\u003C\u002Fli>\n\u003Cli>Cloudflare Workers for image transformations\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Disclaimer\u003C\u002Fh3>\n\u003Cp>This plugin is an independent, third-party project and is \u003Cstrong>not affiliated with, endorsed by, or officially associated with Cloudflare, Inc.\u003C\u002Fstrong> in any way. “Cloudflare” and “R2” are trademarks of Cloudflare, Inc. The use of these names is solely for descriptive purposes to indicate compatibility with Cloudflare services.\u003C\u002Fp>\n\u003Cp>This plugin is developed and maintained independently by the plugin author and the open-source community.\u003C\u002Fp>\n","Offload WordPress media to Cloudflare R2 storage and serve via CDN with automatic image optimization.",0,141,"2026-03-05T04:45:00.000Z","6.9.4","6.0","8.0",[18,19,20,21,22],"cdn","cloudflare","image-optimization","media","offload","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Ftp-media-offload-edge-cdn\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftp-media-offload-edge-cdn.1.0.0.zip",100,null,"2026-03-15T15:16:48.613Z",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":30,"total_installs":11,"avg_security_score":25,"avg_patch_time_days":31,"trust_score":32,"computed_at":33},1,30,94,"2026-04-04T08:11:28.705Z",[35,52,76,95,114],{"slug":36,"name":37,"version":38,"author":39,"author_profile":40,"description":41,"short_description":42,"active_installs":43,"downloaded":44,"rating":11,"num_ratings":11,"last_updated":45,"tested_up_to":14,"requires_at_least":15,"requires_php":46,"tags":47,"homepage":49,"download_link":50,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":51},"codirun-codir2me-cdn","Codirun R2 Media & Static CDN","1.0.6","Codirun","https:\u002F\u002Fprofiles.wordpress.org\u002Fbrunoeduardo\u002F","\u003Cp>The Codirun R2 Media & Static CDN plugin allows you to upload static files (JS, CSS, SVG, fonts) and images to Cloudflare R2 and change the URLs to point to the CDN, resulting in a faster site and greater bandwidth savings.\u003C\u002Fp>\n\u003Ch3>Key Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Upload JS, CSS, SVG, fonts and images to Cloudflare R2\u003C\u002Fli>\n\u003Cli>Replace local URLs with CDN URLs\u003C\u002Fli>\n\u003Cli>Compress and optimize images without quality loss\u003C\u002Fli>\n\u003Cli>Convert images to WebP and AVIF\u003C\u002Fli>\n\u003Cli>Batch upload and image reprocessing\u003C\u002Fli>\n\u003Cli>Intuitive WordPress admin interface\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Premium Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Advanced image optimization and reprocessing\u003C\u002Fli>\n\u003Cli>R2 bucket sync\u003C\u002Fli>\n\u003Cli>File deletion in R2 directly from WordPress\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>External Services\u003C\u002Fh3>\n\u003Cp>This plugin connects to and relies on several external services to provide its functionality. Below is detailed information about each service:\u003C\u002Fp>\n\u003Ch4>Cloudflare R2 Storage\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>What it is:\u003C\u002Fstrong> Cloud storage service provided by Cloudflare for storing your website’s static files and images.\u003Cbr \u002F>\n\u003Cstrong>What data is sent:\u003C\u002Fstrong> Your website’s static files (JavaScript, CSS, SVG, fonts) and images are uploaded to your Cloudflare R2 bucket.\u003Cbr \u002F>\n\u003Cstrong>When data is sent:\u003C\u002Fstrong> When you manually upload files through the plugin interface or when automatic upload is enabled.\u003Cbr \u002F>\n\u003Cstrong>Purpose:\u003C\u002Fstrong> To serve your files via Cloudflare’s global CDN network for improved performance and reduced server load.\u003Cbr \u002F>\n\u003Cstrong>User control:\u003C\u002Fstrong> You provide your own R2 credentials and can disable the service at any time.\u003Cbr \u002F>\n\u003Cstrong>Privacy policy:\u003C\u002Fstrong> https:\u002F\u002Fwww.cloudflare.com\u002Fprivacypolicy\u002F\u003Cbr \u002F>\n\u003Cstrong>Terms of service:\u003C\u002Fstrong> https:\u002F\u002Fwww.cloudflare.com\u002Fterms\u002F\u003C\u002Fp>\n\u003Ch4>License Validation Service\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>What it is:\u003C\u002Fstrong> API service (r2cdn.codirun.com) used to validate premium licenses.\u003Cbr \u002F>\n\u003Cstrong>What data is sent:\u003C\u002Fstrong> License key, website domain, and basic WordPress installation information.\u003Cbr \u002F>\n\u003Cstrong>When data is sent:\u003C\u002Fstrong> When activating\u002Fdeactivating premium features or during periodic license validation checks.\u003Cbr \u002F>\n\u003Cstrong>Purpose:\u003C\u002Fstrong> To verify if your license is valid and grant access to premium features.\u003Cbr \u002F>\n\u003Cstrong>User control:\u003C\u002Fstrong> Only premium users need to provide license keys. Free features work without any license validation.\u003Cbr \u002F>\n\u003Cstrong>Privacy policy:\u003C\u002Fstrong> This service is operated by the plugin author and does not store personal user data beyond the license validation requirements.\u003C\u002Fp>\n\u003Ch4>Stripe Payment Processing\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>What it is:\u003C\u002Fstrong> Third-party payment processor for purchasing premium licenses.\u003Cbr \u002F>\n\u003Cstrong>What data is sent:\u003C\u002Fstrong> Payment information (credit card details, billing address) is sent directly to Stripe when purchasing a license.\u003Cbr \u002F>\n\u003Cstrong>When data is sent:\u003C\u002Fstrong> Only when you choose to purchase a premium license through the provided Stripe checkout links.\u003Cbr \u002F>\n\u003Cstrong>Purpose:\u003C\u002Fstrong> To process license purchases securely.\u003Cbr \u002F>\n\u003Cstrong>User control:\u003C\u002Fstrong> Payment is entirely optional and only required for premium features.\u003Cbr \u002F>\n\u003Cstrong>Privacy policy:\u003C\u002Fstrong> https:\u002F\u002Fstripe.com\u002Fprivacy\u003Cbr \u002F>\n\u003Cstrong>Terms of service:\u003C\u002Fstrong> https:\u002F\u002Fstripe.com\u002Fterms\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Important:\u003C\u002Fstrong> All connections to external services are made only when explicitly configured by the site administrator or when purchasing premium features. The plugin does not collect or transmit any visitor data or personal information without explicit user action.\u003C\u002Fp>\n\u003Ch3>Requirements\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>WordPress 6.0+\u003C\u002Fli>\n\u003Cli>PHP 8.2+\u003C\u002Fli>\n\u003Cli>Cloudflare account with R2 enabled\u003C\u002Fli>\n\u003Cli>AWS SDK for PHP (plugin provides setup guide)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Privacy Policy\u003C\u002Fh3>\n\u003Cp>This plugin interacts with external services as documented in the “External Services” section above.\u003C\u002Fp>\n\u003Cp>The plugin itself does not collect any personal user or visitor data beyond what is necessary for its core functionality (file upload and CDN integration).\u003C\u002Fp>\n\u003Cp>For detailed privacy information about external services:\u003Cbr \u002F>\n– Cloudflare: https:\u002F\u002Fwww.cloudflare.com\u002Fprivacypolicy\u002F\u003Cbr \u002F>\n– Stripe: https:\u002F\u002Fstripe.com\u002Fprivacy\u003C\u002Fp>\n","Upload JS, CSS, SVG, fonts and images to Cloudflare R2 and serve them via Cloudflare CDN to speed up your WordPress site and reduce server load.",10,491,"","8.2",[18,19,20,22,48],"r2","https:\u002F\u002Fcodirun.com\u002Fr2cdn","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcodirun-codir2me-cdn.1.0.6.zip","2026-03-15T10:48:56.248Z",{"slug":53,"name":54,"version":55,"author":56,"author_profile":57,"description":58,"short_description":59,"active_installs":60,"downloaded":61,"rating":62,"num_ratings":63,"last_updated":64,"tested_up_to":65,"requires_at_least":66,"requires_php":67,"tags":68,"homepage":72,"download_link":73,"security_score":74,"vuln_count":30,"unpatched_count":11,"last_vuln_date":75,"fetched_at":27},"ilab-media-tools","Media Cloud for Bunny CDN, Amazon S3, Cloudflare R2, Google Cloud Storage, DigitalOcean and more","4.6.4","interfacelab","https:\u002F\u002Fprofiles.wordpress.org\u002Finterfacelab\u002F","\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002F3tB3rKkwAJY?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp>Media cloud is a revolutionary plug-in for WordPress that will supercharge the performance of your website and radically transform the way that you work with media in WordPress.\u003C\u002Fp>\n\u003Cp>Media Cloud works by moving your images, media and other files from your WordPress server to online cloud storage such as Amazon S3, Google Cloud Storage, DigitalOcean Spaces, DreamHost Object Storage and many others.  You can then serve that media through a CDN like Amazon Cloud front, Cloudflare, Fastly and others.\u003C\u002Fp>\n\u003Cp>Beyond cloud storage, Media Cloud also has deep integration with Imgix, the leading real-time image manipulation and optimization CDN.  Media Cloud is the first plugin for WordPress to bring the full benefit of what Imgix offers – simplifying your development efforts, reducing your site’s page load times and opening up creative options that simply haven’t existed until now.\u003C\u002Fp>\n\u003Cp>Media Cloud also provides advanced image editing tools that provide improved cropping options, effects, filters, watermarking and more.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>NOTE\u003C\u002Fstrong>: This plugin requires PHP 7.1 or higher\u003C\u002Fp>\n\u003Ch4>Upload to S3, Cloudflare R2, Minio, Google Cloud Storage, Digital Ocean Spaces, DreamHost Object Storage and others\u003C\u002Fh4>\n\u003Cp>Automatically copy media uploads to the cloud and serve them directly from your cloud storage provider, CloudFront or any other CDN.\u003C\u002Fp>\n\u003Ch4>Video Encoding with Mux\u003C\u002Fh4>\n\u003Cp>Upload videos and encode them nearly instantly to adaptive bitrate HLS that plays back smoothly and beautifully on any device regardless of bandwidth.  Requires an account with \u003Ca href=\"https:\u002F\u002Fmux.com\" rel=\"nofollow ugc\">Mux\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Integrate with Imgix\u003C\u002Fh4>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fimgix.com\" rel=\"nofollow ugc\">Imgix\u003C\u002Fa> will radically change the way that you build your WordPress sites and themes.  This plugin is the best integration available for WordPress.  Upload your images to S3 with our S3 tool and then host the media with Imgix, providing you with real-time image processing and automatic format delivery.  Forget ImageMagick, Imgix is light years ahead in quality and speed.\u003C\u002Fp>\n\u003Ch4>Native support for Google Cloud Storage\u003C\u002Fh4>\n\u003Cp>Now supports using Google Cloud Storage for uploads without having to use Google’s S3 compatible interop mode.\u003C\u002Fp>\n\u003Ch4>Automatically Tag, Categorize and Caption with Amazon Rekognition\u003C\u002Fh4>\n\u003Cp>Use Amazon’s latest AI tools to tag and categorize your images when uploading to Amazon S3.  With Rekognition, you can automatically detect objects, scenes, and faces in images.\u003C\u002Fp>\n\u003Ch4>Advanced Image Editing\u003C\u002Fh4>\n\u003Cp>When integrating with \u003Ca href=\"https:\u002F\u002Fimgix.com\" rel=\"nofollow ugc\">Imgix\u003C\u002Fa>, Media Cloud by ILAB provides the most advanced WordPress image editor.  Alter contrast, saturation, vibrancy and over 30 other image editing operations – in real time right inside the WordPress admin interface!  Completely non-destructive!\u003C\u002Fp>\n\u003Ch4>Image Cropping\u003C\u002Fh4>\n\u003Cp>Media Cloud by ILAB ships with the most advanced image cropping tool available for WordPress, based on Chen Fengyuan’s amazing Cropper plugin for jQuery.\u003C\u002Fp>\n\u003Ch4>Compatible With Leading Image Optimizers\u003C\u002Fh4>\n\u003Cp>Compatible with Short Pixel, EWWW, Smush and Imagify image optimization plugins!\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Upload to any of a variety of cloud storage providers (Amazon S3, Cloudflare R2, Google Cloud Storage, Minio, Backblaze, DigitalOcean Spaces or any other S3 compatible service)\u003C\u002Fli>\n\u003Cli>Host your media directly from your cloud storage provider or specify a CDN\u003C\u002Fli>\n\u003Cli>Integrate with Imgix media hosting\u003C\u002Fli>\n\u003Cli>Use Amazon Rekognition to automatically tag and categorize images\u003C\u002Fli>\n\u003Cli>Use third party cloud file providers that use S3 compatible APIs\u003C\u002Fli>\n\u003Cli>Advanced image cropping tool\u003C\u002Fli>\n\u003Cli>Advanced image editing with saturation, contrast, auto-correct,\u003Cbr \u002F>\nsharpen, blur and more (only when integrated with Imgix)\u003C\u002Fli>\n\u003Cli>Automatically import your settings from WP Offload Media and WP-Stateless\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Premium Upgrade with Improved Support Options and More Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Built-in image optimization using leading image optimization services like ShortPixel, TinyPNG, Imagify and Kraken.io.  No more third party plugins needed because it’s built into Media Cloud’s process.\u003C\u002Fli>\n\u003Cli>Advanced security for encoded videos and a feature rich video player\u003C\u002Fli>\n\u003Cli>Easily import your existing media library with the push of a button\u003C\u002Fli>\n\u003Cli>WP-CLI support: Import your media library to the cloud, regenerate thumbnails and process your library with Amazon Rekognition using WP-CLI commands.\u003C\u002Fli>\n\u003Cli>Direct uploads integrated directly into WordPress’s media library\u003C\u002Fli>\n\u003Cli>Cloud storage browser that allows you to import media to your media library from the cloud\u003C\u002Fli>\n\u003Cli>WPML, WooCommerce and Easy Digital Downloads integration\u003C\u002Fli>\n\u003Cli>Blubrry Pod Casting, Ultimate Membership integrations\u003C\u002Fli>\n\u003Cli>Push\u002Fpull your CSS and JS assets to the cloud and serve them from a CDN\u003C\u002Fli>\n\u003Cli>Use Google Cloud Vision as a computer vision provider\u003C\u002Fli>\n\u003Cli>Image size manager\u003C\u002Fli>\n\u003Cli>Network level multisite support\u003C\u002Fli>\n\u003Cli>and more!\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fmediacloud.press\u002Fcomparison\u002F\" rel=\"nofollow ugc\">Compare the premium plans\u003C\u002Fa>\u003C\u002Fp>\n","Automatically store media on Amazon S3, Cloudflare R2, Google Cloud Storage, DigitalOcean Spaces + others. Serve CSS\u002FJS assets through CDNs.",7000,539664,70,116,"2024-04-09T11:12:00.000Z","6.5.8","4.9","7.4",[69,70,19,22,71],"amazon","bunnycdn","s3","https:\u002F\u002Fgithub.com\u002Finterfacelab\u002Filab-media-tools","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Filab-media-tools.4.6.4.zip",92,"2024-03-25 00:00:00",{"slug":77,"name":78,"version":79,"author":80,"author_profile":81,"description":82,"short_description":83,"active_installs":84,"downloaded":85,"rating":32,"num_ratings":86,"last_updated":87,"tested_up_to":14,"requires_at_least":88,"requires_php":89,"tags":90,"homepage":93,"download_link":94,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"advanced-media-offloader","Advanced Media Offloader","4.4.1","Masoud Golchin","https:\u002F\u002Fprofiles.wordpress.org\u002Fmasoudin\u002F","\u003Cp>\u003Cstrong>Advanced Media Offloader\u003C\u002Fstrong> helps you optimize your WordPress media handling by automatically uploading your media files to S3-compatible cloud storage services.\u003C\u002Fp>\n\u003Cp>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.\u003C\u002Fp>\n\u003Ch4>Key Benefits\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Reduce server storage requirements and costs\u003C\u002Fli>\n\u003Cli>Decrease server load when serving media files\u003C\u002Fli>\n\u003Cli>Improve global site loading speeds when combined with CDN services\u003C\u002Fli>\n\u003Cli>Maintain full compatibility with WordPress media functions\u003C\u002Fli>\n\u003Cli>No need to modify existing content – URLs are automatically rewritten\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Supported Cloud Providers\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Amazon S3\u003C\u002Fstrong> – The industry standard object storage service\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Cloudflare R2\u003C\u002Fstrong> – S3-compatible storage with zero egress fees\u003C\u002Fli>\n\u003Cli>\u003Cstrong>DigitalOcean Spaces\u003C\u002Fstrong> – Simple object storage from DigitalOcean\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Backblaze B2\u003C\u002Fstrong> – Affordable S3-compatible storage with predictable pricing\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Wasabi\u003C\u002Fstrong> – Hot cloud storage with predictable pricing\u003C\u002Fli>\n\u003Cli>\u003Cstrong>MinIO\u003C\u002Fstrong> – Any S3-compatible storage (MinIO, OVHcloud Object Storage, Scaleway, Linode, Vultr, IBM COS, and more)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Not sure which provider to choose? Check our \u003Ca href=\"https:\u002F\u002Fwpfitter.com\u002Fblog\u002Fbest-cloud-storage-for-wordpress-media-pricing-comparison\u002F?utm_source=wp-plugin&utm_medium=readme&utm_campaign=advanced-media-offloader&utm_content=pricing-comparison\" rel=\"nofollow ugc\">cloud storage pricing comparison\u003C\u002Fa> for real-world cost breakdowns.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Automatic Offloading\u003C\u002Fstrong> – New media uploads are automatically sent to your cloud storage\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Smart Policies\u003C\u002Fstrong> – Create advanced rules to control exactly which files are offloaded and when, giving you granular control over your storage. (\u003Ca href=\"https:\u002F\u002Fwpfitter.com\u002Fblog\u002Fimplementing-smart-retention-policies-with-advanced-media-offloader\u002F?utm_source=wp-plugin&utm_medium=readme&utm_campaign=advanced-media-offloader&utm_content=smart-policies\" rel=\"nofollow ugc\">Learn more\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bulk Migration & WP CLI\u003C\u002Fstrong> – Easily move existing media to the cloud with powerful command-line support for bulk operations and automation (\u003Ca href=\"https:\u002F\u002Fwpfitter.com\u002Fblog\u002Fadvmo-bulk-offload-with-wp-cli?utm_source=wp-plugin&utm_medium=readme&utm_campaign=advanced-media-offloader&utm_content=bulk-offload-cli\" rel=\"nofollow ugc\">Learn more\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Thumbnail Regeneration Compatibility\u003C\u002Fstrong> – Compatible with WP-CLI \u003Ccode>wp media regenerate\u003C\u002Fcode> command and the Regenerate Thumbnails plugin. Regenerated thumbnails automatically offload to cloud storage. Note: Not compatible with Full Cloud Migration retention policy.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Smart URL Rewriting\u003C\u002Fstrong> – All media URLs are automatically rewritten to serve from cloud storage\u003C\u002Fli>\n\u003Cli>\u003Cstrong>File Versioning\u003C\u002Fstrong> – Add unique timestamps to media paths to prevent caching issues\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Flexible Retention\u003C\u002Fstrong> – Choose to keep local copies or remove them after successful offloading\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Mirror Deletion\u003C\u002Fstrong> – Optionally remove files from cloud storage when deleted from WordPress\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Paths\u003C\u002Fstrong> – Configure custom path prefixes in your cloud storage\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Image Optimizer Compatibility\u003C\u002Fstrong> – Works with \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fwebp-uploads\u002F\" rel=\"ugc\">Modern Image Formats\u003C\u002Fa> (recommended), Imagify, and EWWW Image Optimizer. Optimized WebP and AVIF files are automatically offloaded alongside originals. (\u003Ca href=\"https:\u002F\u002Fwpfitter.com\u002Fblog\u002Fewww-imagify-support-added-to-advanced-media-offloader\u002F?utm_source=wp-plugin&utm_medium=readme&utm_campaign=advanced-media-offloader&utm_content=image-optimizer-compatibility\" rel=\"nofollow ugc\">Learn more\u003C\u002Fa>)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developer-Friendly\u003C\u002Fstrong> – Extensive action and filter hooks for extending functionality (\u003Ca href=\"https:\u002F\u002Fwpfitter.com\u002Fdocuments\u002Fadvanced-media-offloader\u002Fdevelopment-hooks\u002F?utm_source=wp-plugin&utm_medium=readme&utm_campaign=advanced-media-offloader&utm_content=developer-hooks\" rel=\"nofollow ugc\">View Documentation\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Developer Documentation\u003C\u002Fh4>\n\u003Cp>For developers looking to extend or customize the plugin behavior, we provide comprehensive documentation for all available hooks:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwpfitter.com\u002Fdocuments\u002Fadvanced-media-offloader\u002Fdevelopment-hooks\u002F?utm_source=wp-plugin&utm_medium=readme&utm_campaign=advanced-media-offloader&utm_content=developer-hooks\" rel=\"nofollow ugc\">View Developer Hooks Documentation \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Quick example – skip offloading files larger than 5MB:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>add_filter('advmo_should_offload_attachment', function($should_offload, $attachment_id) {\n    $file = get_attached_file($attachment_id);\n    if ($file && filesize($file) > 5 * 1024 * 1024) {\n        return false;\n    }\n    return $should_offload;\n}, 10, 2);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Configuration\u003C\u002Fh3>\n\u003Cp>For security, cloud provider credentials are stored in your \u003Ccode>wp-config.php\u003C\u002Fcode> file rather than the database.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Note:\u003C\u002Fstrong> Domain and endpoint URLs will automatically be prefixed with \u003Ccode>https:\u002F\u002F\u003C\u002Fcode> if you don’t include it, but we recommend always including the full URL for clarity.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fr2\u002F\" rel=\"nofollow ugc\">Cloudflare R2\u003C\u002Fa> Configuration\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>    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\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.digitalocean.com\u002Fproducts\u002Fspaces\" rel=\"nofollow ugc\">DigitalOcean Spaces\u003C\u002Fa> Configuration\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>    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\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fmin.io\u002Fdocs\u002Fminio\u002Flinux\u002Fadministration\u002Fidentity-access-management\u002Fminio-user-management.html\" rel=\"nofollow ugc\">MinIO\u003C\u002Fa> Configuration\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>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.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>    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); \u002F\u002F 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'); \u002F\u002F Optional. Set your MinIO bucket region if needed. Default is 'us-east-1'.\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fs3\u002F\" rel=\"nofollow ugc\">Amazon S3\u003C\u002Fa> Configuration\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>    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\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwww.backblaze.com\u002Fapidocs\u002Fintroduction-to-the-s3-compatible-api\" rel=\"nofollow ugc\">Backblaze B2\u003C\u002Fa> Configuration\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>    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\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Fdocs.wasabi.com\u002Fdocs\u002Fcreating-a-new-access-key\" rel=\"nofollow ugc\">Wasabi\u003C\u002Fa> Configuration\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>    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\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Using the S3 PHP SDK\u003C\u002Fh3>\n\u003Cp>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.\u003C\u002Fp>\n\u003Cp>For more information about the AWS SDK for PHP, visit:\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Faws.amazon.com\u002Fsdk-for-php\u002F\" rel=\"nofollow ugc\">https:\u002F\u002Faws.amazon.com\u002Fsdk-for-php\u002F\u003C\u002Fa>\u003C\u002Fp>\n","Save server space & speed up your site by automatically offloading media to Amazon S3, Cloudflare R2 & more.",3000,35528,42,"2026-03-11T11:11:00.000Z","5.6","8.1",[19,91,22,71,92],"media-library","storage","https:\u002F\u002Fwpfitter.com\u002Fplugins\u002Fadvanced-media-offloader\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fadvanced-media-offloader.4.4.1.zip",{"slug":96,"name":97,"version":98,"author":99,"author_profile":100,"description":101,"short_description":102,"active_installs":103,"downloaded":104,"rating":105,"num_ratings":106,"last_updated":107,"tested_up_to":14,"requires_at_least":108,"requires_php":109,"tags":110,"homepage":45,"download_link":113,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"offload-media-cloud-storage","Offload Media – Cloud Storage","1.7.0","acowebs","https:\u002F\u002Fprofiles.wordpress.org\u002Facowebs\u002F","\u003Cp>Offload- Media Cloud Storage is an innovative plugin for WordPress. It will dramatically transform how you interact with media in WordPress and increase the website’s performance. Media Cloud Storage is a way to transfer your files, media, and images from a WordPress server to online cloud storage, such as Amazon S3, DigitalOcean Spaces, Cloudflare R2, and Google Cloud Storage Services. And it rewrites the URL to serve files from the same storage provider or another CDN provider.\u003C\u002Fp>\n\u003Ch3>HOW TO MANAGE SETTINGS?\u003C\u002Fh3>\n\u003Cp>To manage settings in the Offload Media Cloud Storage, download and activate the WordPress plugin.\u003Cbr \u002F>\nGo to the Offload media menu in the left menu bar of WordPress, where you can manage the settings. The settings include configure and Settings.\u003Cbr \u002F>\nConfigure settings allow you to set up the basic plugin settings, while Settings help for the customization of the media upload and serving strategies.\u003C\u002Fp>\n\u003Ch3> Basic Features\u003C\u002Fh3>\n\u003Cp>It improves your website speed. Your website will load more efficiently if the cloud media is being transferred to cloud servers.  It can make your website faster because it reduces server requests.\u003Cbr \u002F>\nThe plugin you have installed no longer needs to serve the media contents like images, videos, pdfs, ZIPs, PDFs as well as other files that you uploaded to the server.\u003C\u002Fp>\n\u003Cp>Here are the features of the Offload Media – Cloud Storage:\u003C\u002Fp>\n\u003Cp>🔹 Sync your media to Amazon s3, Google Cloud Storage, Cloudflare R2 or Digital Ocean Spaces.\u003Cbr \u002F>\n🔹 Delete files from the server once it is uploaded to the server.\u003Cbr \u002F>\n🔹 Customizable base path of server storage.\u003Cbr \u002F>\n🔹 Customizable URL structure.\u003Cbr \u002F>\n🔹 Object versioning can be created for avoiding invalidations of media.\u003Cbr \u002F>\n🔹 Custom CDN can be used for media URLs.\u003Cbr \u002F>\n🔹 Pre-signed URLs can be created.\u003Cbr \u002F>\n🔹 Woocommerce Support\u003Cbr \u002F>\n🔹 Advanced Custom Fields Support\u003Cbr \u002F>\n🔹 RTL Support\u003Cbr \u002F>\n🔹 Fully compatible with all Acowebs plugins\u003Cbr \u002F>\n🔹 WPML string Translations support\u003C\u002Fp>\n\u003Ch3>Why Acowebs?\u003C\u002Fh3>\n\u003Cp>Acowebs has established the foundation by providing the experience and expertise to activate WooCommerce stores using compact and highly-performing WooCommerce plugins as well as Shopify applications. We develop top-quality themes and WordPress in the cloud to provide comprehensive solutions that are brimming with unparalleled UX features. Being an award-winning software company, and a part of Acodez, the globally recognized and multiple-award-winning digital agency, our team and support features assure you the best.\u003C\u002Fp>\n\u003Cp>Check out our other WordPress plugins \u003Ca href=\"https:\u002F\u002Fprofiles.wordpress.org\u002Facowebs\u002F#content-plugins\" rel=\"nofollow ugc\">here\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>OTHER USEFUL LINKS\u003C\u002Fh3>\n\u003Cp>🔹 \u003Ca href=\"https:\u002F\u002Facowebs.com\u002F\" rel=\"nofollow ugc\">Pro version coming soon\u003C\u002Fa>\u003Cbr \u002F>\n🔹 \u003Ca href=\"https:\u002F\u002Facowebs.com\u002Fguideline\u002Fplugin-docs-faqs\u002Foffload-media\u002F\" rel=\"nofollow ugc\">Documentation\u003C\u002Fa>\u003Cbr \u002F>\n🔹 \u003Ca href=\"https:\u002F\u002Facowebs.com\u002Fwoocommerce-plugins\u002F\" rel=\"nofollow ugc\">Find Our Other Plugins\u003C\u002Fa>\u003Cbr \u002F>\n🔹 \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Foffload-media-cloud-storage\u002F#new-topic-0\" rel=\"ugc\">Support Ticket\u003C\u002Fa>\u003Cbr \u002F>\n🔹 \u003Ca href=\"https:\u002F\u002Fwww.facebook.com\u002Facowebs\" rel=\"nofollow ugc\">Facebook\u003C\u002Fa>\u003Cbr \u002F>\n🔹 \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Facowebs\" rel=\"nofollow ugc\">Twitter\u003C\u002Fa>\u003Cbr \u002F>\n🔹 \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUCXoOjbKiXjDocNMe8qd3WHw\" rel=\"nofollow ugc\">YouTube\u003C\u002Fa>\u003C\u002Fp>\n","Offload Media moves your WordPress files to cloud storage (AWS S3, DigitalOcean, Cloudflare R2, Google Cloud) to improve site performance.",1000,23355,88,18,"2026-03-04T04:07:00.000Z","4.4.0","7.2",[18,111,21,22,112],"cloud","performance","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Foffload-media-cloud-storage.1.7.0.zip",{"slug":115,"name":116,"version":117,"author":118,"author_profile":119,"description":120,"short_description":121,"active_installs":25,"downloaded":122,"rating":25,"num_ratings":123,"last_updated":124,"tested_up_to":125,"requires_at_least":126,"requires_php":16,"tags":127,"homepage":45,"download_link":129,"security_score":25,"vuln_count":11,"unpatched_count":11,"last_vuln_date":26,"fetched_at":27},"yctvn-media-offload-cloudflare-r2","Yctvn Media Offload for Cloudflare R2","1.0.2","Kangta","https:\u002F\u002Fprofiles.wordpress.org\u002Fkangta911\u002F","\u003Cp>\u003Cstrong>Yctvn Media Offload for Cloudflare R2\u003C\u002Fstrong> seamlessly integrates your WordPress media library with Cloudflare R2 Storage, providing enterprise-grade CDN delivery at a fraction of the cost of traditional solutions.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>📸 New to Cloudflare R2?\u003C\u002Fstrong> Check out the Screenshots section for a complete visual setup guide with step-by-step instructions!\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Automatic Media Upload\u003C\u002Fstrong>: Automatically upload new media files to R2 storage as they’re added to WordPress\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Bulk Sync\u003C\u002Fstrong>: Migrate existing media library to R2 with one-click bulk sync\u003C\u002Fli>\n\u003Cli>\u003Cstrong>CDN URL Rewriting\u003C\u002Fstrong>: Serve all media from Cloudflare’s global CDN network\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Image Size Support\u003C\u002Fstrong>: Upload and serve all WordPress image sizes including thumbnails\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Responsive Images\u003C\u002Fstrong>: Full support for srcset and responsive images\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Post Content Rewriting\u003C\u002Fstrong>: Automatically rewrite image URLs in post content\u003C\u002Fli>\n\u003Cli>\u003Cstrong>AWS Signature V4\u003C\u002Fstrong>: Secure authentication using industry-standard protocols\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Debug Mode\u003C\u002Fstrong>: Comprehensive logging for troubleshooting\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Why Choose R2 Storage?\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Cost Effective\u003C\u002Fstrong>: No egress fees – pay only for storage\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Global Performance\u003C\u002Fstrong>: Leverage Cloudflare’s worldwide CDN network\u003C\u002Fli>\n\u003Cli>\u003Cstrong>S3 Compatible\u003C\u002Fstrong>: Works with standard S3 APIs\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Reliability\u003C\u002Fstrong>: Enterprise-grade infrastructure with 99.9% uptime SLA\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Requirements\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WordPress 5.0 or higher\u003C\u002Fli>\n\u003Cli>PHP 8.0 or higher (compatible with 8.0, 8.1, 8.2, 8.3, 8.4)\u003C\u002Fli>\n\u003Cli>Cloudflare account with R2 enabled\u003C\u002Fli>\n\u003Cli>R2 API credentials (Access Key ID and Secret Access Key)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Getting Started\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>Visual Guide:\u003C\u002Fstrong> See the Screenshots section below for a complete step-by-step visual guide!\u003C\u002Fp>\n\u003Cp>Follow these 3 simple steps to connect your WordPress site to Cloudflare R2:\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Step 1: Create R2 Bucket\u003C\u002Fstrong>\u003Cbr \u002F>\n1. Log in to \u003Ca href=\"https:\u002F\u002Fdash.cloudflare.com\u002F\" rel=\"nofollow ugc\">Cloudflare Dashboard\u003C\u002Fa>\u003Cbr \u002F>\n2. Click on “R2” in the left sidebar\u003Cbr \u002F>\n3. Click “Create bucket”\u003Cbr \u002F>\n4. Enter a unique bucket name (e.g., “my-wordpress-media”)\u003Cbr \u002F>\n5. Choose a location (optional)\u003Cbr \u002F>\n6. Click “Create bucket”\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Step 2: Get Your Credentials\u003C\u002Fstrong>\u003Cbr \u002F>\nYou need 4 pieces of information from Cloudflare:\u003C\u002Fp>\n\u003Cp>\u003Cem>A. Account ID:\u003C\u002Fem>\u003Cbr \u002F>\n– In R2 dashboard, look at the top right corner\u003Cbr \u002F>\n– Copy the “Account ID” (format: 32 alphanumeric characters)\u003C\u002Fp>\n\u003Cp>\u003Cem>B. Access Key ID & Secret Access Key:\u003C\u002Fem>\u003Cbr \u002F>\n1. In R2 dashboard, click “Manage R2 API Tokens”\u003Cbr \u002F>\n2. Click “Create API token”\u003Cbr \u002F>\n3. Give it a name (e.g., “WordPress Media Plugin”)\u003Cbr \u002F>\n4. Under Permissions, select “Object Read & Write”\u003Cbr \u002F>\n5. (Optional) Under “Specify bucket(s)”, you can limit to your specific bucket\u003Cbr \u002F>\n6. Click “Create API token”\u003Cbr \u002F>\n7. \u003Cstrong>IMPORTANT\u003C\u002Fstrong>: Copy and save both:\u003Cbr \u002F>\n   – Access Key ID (shows immediately)\u003Cbr \u002F>\n   – Secret Access Key (shows only once – save it now!)\u003C\u002Fp>\n\u003Cp>\u003Cem>C. Bucket Name:\u003C\u002Fem>\u003Cbr \u002F>\n– The name you created in Step 1 (e.g., “my-wordpress-media”)\u003C\u002Fp>\n\u003Cp>\u003Cem>D. Public URL (CDN URL):\u003C\u002Fem>\u003Cbr \u002F>\n– Go to your R2 bucket \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Settings\u003Cbr \u002F>\n– Under “Public access”, click “Allow Access”\u003Cbr \u002F>\n– Your public URL will be: \u003Ccode>https:\u002F\u002Fpub-[hash].r2.dev\u003C\u002Fcode>\u003Cbr \u002F>\n– OR connect a custom domain under “Custom Domains” (e.g., \u003Ccode>https:\u002F\u002Fcdn.yoursite.com\u003C\u002Fcode>)\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Step 3: Configure Plugin\u003C\u002Fstrong>\u003Cbr \u002F>\n1. Install and activate this plugin\u003Cbr \u002F>\n2. Go to Settings \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Yctvn Media Offload\u003Cbr \u002F>\n3. Enter all 4 credentials from Step 2:\u003Cbr \u002F>\n   – Account ID\u003Cbr \u002F>\n   – Access Key ID\u003Cbr \u002F>\n   – Secret Access Key\u003Cbr \u002F>\n   – Bucket Name\u003Cbr \u002F>\n   – Public URL (your R2 public URL or custom domain)\u003Cbr \u002F>\n4. Check “Auto Offload” to automatically upload new media\u003Cbr \u002F>\n5. Check “Enable URL Rewrite” to serve media from R2\u002FCDN\u003Cbr \u002F>\n6. Click “Save Settings”\u003Cbr \u002F>\n7. Use “Bulk Sync” to upload existing media\u003C\u002Fp>\n\u003Ch3>Additional Information\u003C\u002Fh3>\n\u003Ch4>Support\u003C\u002Fh4>\n\u003Cp>For support, please use the WordPress.org support forum.\u003C\u002Fp>\n\u003Ch4>Buy Me a Coffee\u003C\u002Fh4>\n\u003Cp>If you find this plugin helpful, consider \u003Ca href=\"https:\u002F\u002Fwww.buymeacoffee.com\u002Fkangta911\" rel=\"nofollow ugc\">buying me a coffee\u003C\u002Fa> ☕\u003C\u002Fp>\n\u003Cp>Your support helps maintain and improve this plugin!\u003C\u002Fp>\n\u003Ch4>Contributing\u003C\u002Fh4>\n\u003Cp>This plugin is open source and welcomes contributions from the community.\u003C\u002Fp>\n\u003Ch4>Privacy\u003C\u002Fh4>\n\u003Cp>This plugin does not collect any personal data. Media files are transferred directly between your WordPress site and your Cloudflare R2 account.\u003C\u002Fp>\n","Automatically offload your WordPress media library to Cloudflare R2 Storage for improved performance and reduced hosting costs.",854,3,"2025-10-05T18:39:00.000Z","6.8.5","5.0",[18,19,21,128,92],"object-storage","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fyctvn-media-offload-cloudflare-r2.1.0.2.zip",{"attackSurface":131,"codeSignals":397,"taintFlows":468,"riskAssessment":494,"analyzedAt":503},{"hooks":132,"ajaxHandlers":278,"restRoutes":388,"shortcodes":389,"cronEvents":390,"entryPointCount":360,"unprotectedCount":244},[133,139,143,147,151,156,161,165,169,173,177,181,185,189,195,200,203,207,210,214,218,222,227,231,234,237,241,245,249,255,259,262,266,270,274],{"type":134,"name":135,"callback":136,"file":137,"line":138},"action","admin_menu","add_menu_page","src\\Admin\\AdminMenu.php",79,{"type":134,"name":140,"callback":141,"file":137,"line":142},"admin_init","register_settings",80,{"type":134,"name":144,"callback":145,"file":137,"line":146},"admin_enqueue_scripts","enqueue_admin_menu_icon_style",81,{"type":134,"name":144,"callback":148,"file":149,"line":150},"enqueue_deactivation_dialog_script","src\\Admin\\DeactivationHandler.php",26,{"type":134,"name":152,"callback":153,"file":154,"line":155},"pre_get_posts","prefetch_pending_on_media_query","src\\Admin\\MediaLibraryExtension.php",45,{"type":157,"name":158,"callback":159,"file":154,"line":160},"filter","manage_media_columns","add_status_column",48,{"type":134,"name":162,"callback":163,"priority":43,"file":154,"line":164},"manage_media_custom_column","render_status_column",49,{"type":157,"name":166,"callback":167,"priority":43,"file":154,"line":168},"media_row_actions","add_row_actions",52,{"type":157,"name":170,"callback":171,"file":154,"line":172},"bulk_actions-upload","add_bulk_actions",55,{"type":157,"name":174,"callback":175,"priority":43,"file":154,"line":176},"handle_bulk_actions-upload","handle_bulk_actions",56,{"type":134,"name":178,"callback":179,"file":154,"line":180},"admin_notices","show_bulk_action_notices",59,{"type":157,"name":182,"callback":183,"priority":43,"file":154,"line":184},"attachment_fields_to_edit","add_attachment_fields",67,{"type":157,"name":186,"callback":187,"priority":43,"file":154,"line":188},"the_posts","prefetch_pending_status_batch",87,{"type":157,"name":190,"callback":191,"priority":192,"file":193,"line":194},"wp_generate_attachment_metadata","on_attachment_metadata_generated",20,"src\\Hooks\\MediaUploadHooks.php",37,{"type":134,"name":196,"callback":197,"priority":198,"file":193,"line":199},"delete_attachment","on_attachment_deleted",5,41,{"type":134,"name":201,"callback":202,"file":193,"line":86},"cfr2_process_queue","process",{"type":157,"name":204,"callback":205,"priority":43,"file":206,"line":155},"render_block_core\u002Fimage","filter_image_block","src\\Integrations\\GutenbergIntegration.php",{"type":157,"name":208,"callback":209,"priority":43,"file":206,"line":160},"render_block_core\u002Fgallery","filter_gallery_block",{"type":157,"name":211,"callback":212,"priority":43,"file":206,"line":213},"render_block_core\u002Fcover","filter_cover_block",51,{"type":157,"name":215,"callback":216,"priority":43,"file":206,"line":217},"render_block_core\u002Fmedia-text","filter_media_text_block",54,{"type":134,"name":219,"callback":220,"file":221,"line":31},"rest_api_init","register_routes","src\\Integrations\\RestApiIntegration.php",{"type":157,"name":223,"callback":224,"priority":43,"file":225,"line":226},"woocommerce_single_product_image_thumbnail_html","filter_gallery_thumbnail","src\\Integrations\\WooCommerceIntegration.php",46,{"type":157,"name":228,"callback":229,"priority":43,"file":225,"line":230},"woocommerce_product_get_image","filter_product_image",47,{"type":157,"name":232,"callback":233,"priority":43,"file":225,"line":160},"woocommerce_cart_item_thumbnail","filter_cart_thumbnail",{"type":134,"name":235,"callback":236,"priority":192,"file":225,"line":213},"woocommerce_process_product_meta","on_product_save",{"type":134,"name":238,"callback":239,"file":240,"line":74},"cfr2_cleanup_stats","cleanup_old_stats","src\\Plugin.php",{"type":134,"name":144,"callback":242,"file":243,"line":244},"enqueue_admin_assets","src\\PublicSide\\Assets.php",24,{"type":134,"name":246,"callback":247,"file":243,"line":248},"wp_enqueue_scripts","enqueue_public_assets",25,{"type":157,"name":250,"callback":251,"priority":252,"file":253,"line":254},"wp_get_attachment_url","rewrite_attachment_url",99,"src\\Services\\URLRewriter.php",65,{"type":157,"name":256,"callback":257,"priority":43,"file":253,"line":258},"wp_get_attachment_image_attributes","add_lazy_loading",66,{"type":157,"name":260,"callback":261,"priority":252,"file":253,"line":62},"wp_get_attachment_image_src","rewrite_image_src",{"type":157,"name":263,"callback":264,"priority":252,"file":253,"line":265},"wp_calculate_image_srcset","generate_srcset",71,{"type":157,"name":267,"callback":268,"priority":43,"file":253,"line":269},"wp_content_img_tag","wrap_with_picture_element",74,{"type":134,"name":271,"callback":272,"file":253,"line":273},"shutdown","closure",135,{"type":134,"name":275,"callback":272,"file":276,"line":277},"plugins_loaded","tp-media-offload-edge-cdn.php",34,[279,284,288,292,296,299,303,306,310,314,317,321,325,329,333,336,339,342,346,349,352,356,361,364,367,372,376,380,384],{"action":280,"nopriv":281,"callback":282,"hasNonce":281,"hasCapCheck":281,"file":283,"line":31},"cfr2_get_stats",false,"ajax_get_stats","src\\Admin\\Ajax\\ActivityAjaxHandler.php",{"action":285,"nopriv":281,"callback":286,"hasNonce":281,"hasCapCheck":281,"file":283,"line":287},"cfr2_get_activity_log","ajax_get_activity_log",31,{"action":289,"nopriv":281,"callback":290,"hasNonce":281,"hasCapCheck":281,"file":283,"line":291},"cfr2_retry_failed","ajax_retry_failed",32,{"action":293,"nopriv":281,"callback":294,"hasNonce":281,"hasCapCheck":281,"file":283,"line":295},"cfr2_retry_single","ajax_retry_single",33,{"action":297,"nopriv":281,"callback":298,"hasNonce":281,"hasCapCheck":281,"file":283,"line":277},"cfr2_clear_log","ajax_clear_log",{"action":300,"nopriv":281,"callback":301,"hasNonce":281,"hasCapCheck":281,"file":302,"line":62},"cfr2_bulk_offload_all","ajax_bulk_offload_all","src\\Admin\\Ajax\\BulkOperationAjaxHandler.php",{"action":304,"nopriv":281,"callback":305,"hasNonce":281,"hasCapCheck":281,"file":302,"line":265},"cfr2_bulk_restore_all","ajax_bulk_restore_all",{"action":307,"nopriv":281,"callback":308,"hasNonce":281,"hasCapCheck":281,"file":302,"line":309},"cfr2_bulk_delete_local","ajax_bulk_delete_local",72,{"action":311,"nopriv":281,"callback":312,"hasNonce":281,"hasCapCheck":281,"file":302,"line":313},"cfr2_process_bulk_item","ajax_process_bulk_item",73,{"action":315,"nopriv":281,"callback":316,"hasNonce":281,"hasCapCheck":281,"file":302,"line":269},"cfr2_process_restore_item","ajax_process_restore_item",{"action":318,"nopriv":281,"callback":319,"hasNonce":281,"hasCapCheck":281,"file":302,"line":320},"cfr2_process_delete_local_item","ajax_process_delete_local_item",75,{"action":322,"nopriv":281,"callback":323,"hasNonce":281,"hasCapCheck":281,"file":302,"line":324},"cfr2_cancel_bulk","ajax_cancel_bulk",76,{"action":326,"nopriv":281,"callback":327,"hasNonce":281,"hasCapCheck":281,"file":302,"line":328},"cfr2_get_bulk_progress","ajax_get_bulk_progress",77,{"action":330,"nopriv":281,"callback":331,"hasNonce":281,"hasCapCheck":281,"file":302,"line":332},"cfr2_get_bulk_counts","ajax_get_bulk_counts",78,{"action":334,"nopriv":281,"callback":335,"hasNonce":281,"hasCapCheck":281,"file":302,"line":138},"cfr2_get_pending_items","ajax_get_pending_items",{"action":337,"nopriv":281,"callback":338,"hasNonce":281,"hasCapCheck":281,"file":302,"line":142},"cfr2_cancel_pending_item","ajax_cancel_pending_item",{"action":340,"nopriv":281,"callback":341,"hasNonce":281,"hasCapCheck":281,"file":302,"line":146},"cfr2_clear_pending","ajax_clear_pending",{"action":343,"nopriv":281,"callback":344,"hasNonce":281,"hasCapCheck":281,"file":345,"line":291},"cfr2_save_settings","ajax_save_settings","src\\Admin\\Ajax\\SettingsAjaxHandler.php",{"action":347,"nopriv":281,"callback":348,"hasNonce":281,"hasCapCheck":281,"file":345,"line":295},"cfr2_test_r2","ajax_test_r2_connection",{"action":350,"nopriv":281,"callback":351,"hasNonce":281,"hasCapCheck":281,"file":345,"line":277},"cfr2_validate_cdn_dns","ajax_validate_cdn_dns",{"action":353,"nopriv":281,"callback":354,"hasNonce":281,"hasCapCheck":281,"file":345,"line":355},"cfr2_enable_dns_proxy","ajax_enable_dns_proxy",35,{"action":357,"nopriv":281,"callback":358,"hasNonce":281,"hasCapCheck":281,"file":359,"line":360},"cfr2_deploy_worker","ajax_deploy_worker","src\\Admin\\Ajax\\WorkerAjaxHandler.php",29,{"action":362,"nopriv":281,"callback":363,"hasNonce":281,"hasCapCheck":281,"file":359,"line":31},"cfr2_remove_worker","ajax_remove_worker",{"action":365,"nopriv":281,"callback":366,"hasNonce":281,"hasCapCheck":281,"file":359,"line":287},"cfr2_worker_status","ajax_worker_status",{"action":368,"nopriv":281,"callback":369,"hasNonce":370,"hasCapCheck":370,"file":149,"line":371},"cfr2_cleanup_data","ajax_cleanup_data",true,27,{"action":373,"nopriv":281,"callback":374,"hasNonce":370,"hasCapCheck":370,"file":154,"line":375},"cfr2_offload_single","ajax_offload_single",62,{"action":377,"nopriv":281,"callback":378,"hasNonce":370,"hasCapCheck":370,"file":154,"line":379},"cfr2_restore_single","ajax_restore_single",63,{"action":381,"nopriv":281,"callback":382,"hasNonce":370,"hasCapCheck":370,"file":154,"line":383},"cfr2_delete_local_single","ajax_delete_local_single",64,{"action":385,"nopriv":281,"callback":386,"hasNonce":370,"hasCapCheck":370,"file":154,"line":387},"cfr2_offload_attachment","ajax_offload_attachment",68,[],[],[391,393,395],{"hook":238,"callback":238,"file":392,"line":226},"src\\Core\\Activator.php",{"hook":201,"callback":201,"file":394,"line":383},"src\\Services\\OffloadService.php",{"hook":201,"callback":201,"file":394,"line":396},317,{"dangerousFunctions":398,"sqlUsage":399,"outputEscaping":445,"fileOperations":30,"externalRequests":123,"nonceChecks":43,"capabilityChecks":463,"bundledLibraries":464},[],{"prepared":400,"raw":106,"locations":401},58,[402,405,409,411,413,416,418,420,423,427,429,430,434,436,438,441,443,444],{"file":302,"line":403,"context":404},130,"$wpdb->get_col() with variable interpolation",{"file":406,"line":407,"context":408},"src\\Admin\\Tabs\\DashboardTab.php",140,"$wpdb->get_var() with variable interpolation",{"file":406,"line":410,"context":408},149,{"file":406,"line":412,"context":408},158,{"file":414,"line":415,"context":408},"src\\Admin\\Tabs\\SystemInfoTab.php",271,{"file":414,"line":417,"context":408},276,{"file":414,"line":419,"context":408},281,{"file":421,"line":422,"context":404},"src\\CLI\\Commands.php",497,{"file":424,"line":425,"context":426},"src\\Database\\Schema.php",85,"$wpdb->query() with variable interpolation",{"file":424,"line":428,"context":426},86,{"file":424,"line":188,"context":426},{"file":431,"line":432,"context":433},"src\\Integrations\\RestApiStatusHandler.php",115,"$wpdb->get_row() with variable interpolation",{"file":435,"line":25,"context":408},"src\\Services\\BulkProgressService.php",{"file":435,"line":437,"context":408},119,{"file":439,"line":440,"context":408},"src\\Services\\QueueProcessor.php",122,{"file":442,"line":291,"context":426},"uninstall.php",{"file":442,"line":295,"context":426},{"file":442,"line":277,"context":426},{"escaped":446,"rawEcho":447,"locations":448},139,6,[449,452,454,456,458,461],{"file":154,"line":450,"context":451},228,"raw output",{"file":154,"line":453,"context":451},230,{"file":154,"line":455,"context":451},232,{"file":154,"line":457,"context":451},234,{"file":459,"line":460,"context":451},"src\\Admin\\Tabs\\CdnTab.php",186,{"file":459,"line":462,"context":451},191,13,[465],{"name":466,"version":26,"knownCves":467},"Guzzle",[],[469,486],{"entryPoint":470,"graph":471,"unsanitizedCount":30,"severity":485},"ajax_save_settings (src\\Admin\\Ajax\\SettingsAjaxHandler.php:76)",{"nodes":472,"edges":483},[473,478],{"id":474,"type":475,"label":476,"file":345,"line":477},"n0","source","$_POST",114,{"id":479,"type":480,"label":481,"file":345,"line":440,"wp_function":482},"n1","sink","update_option() [Settings Manipulation]","update_option",[484],{"from":474,"to":479,"sanitized":281},"low",{"entryPoint":487,"graph":488,"unsanitizedCount":11,"severity":485},"\u003CSettingsAjaxHandler> (src\\Admin\\Ajax\\SettingsAjaxHandler.php:0)",{"nodes":489,"edges":492},[490,491],{"id":474,"type":475,"label":476,"file":345,"line":477},{"id":479,"type":480,"label":481,"file":345,"line":440,"wp_function":482},[493],{"from":474,"to":479,"sanitized":370},{"summary":495,"deductions":496},"The \"tp-media-offload-edge-cdn\" v1.0.0 plugin exhibits a mixed security posture. On the positive side, it demonstrates good practices by utilizing prepared statements for a high percentage of its SQL queries and properly escaping the vast majority of its outputs. The absence of known CVEs and a clean vulnerability history are also strong indicators of a well-maintained and secure codebase. The presence of nonce and capability checks, along with the limited number of file operations and external HTTP requests, further contribute to a generally robust foundation.\n\nHowever, a significant concern arises from the plugin's attack surface. With 29 AJAX handlers identified, a substantial 24 of them lack authentication checks. This creates a wide entry point for potential attackers to interact with the plugin's functionality without proper authorization, which could lead to unintended actions or data manipulation. While the taint analysis did not reveal critical or high-severity issues, the single flow with an unsanitized path warrants attention. The bundled Guzzle library, though not flagged as outdated in the provided data, is a common component that, if not kept up-to-date, could introduce vulnerabilities.\n\nIn conclusion, the plugin has a solid foundation in terms of core secure coding practices. The primary weakness lies in the excessive number of unprotected AJAX endpoints. Addressing this critical oversight by implementing proper authentication and authorization checks on these handlers should be the top priority to significantly mitigate the identified risks. The vulnerability history is encouraging, but the large attack surface remains a notable area of concern.",[497,499,501],{"reason":498,"points":43},"Unprotected AJAX handlers (24\u002F29)",{"reason":500,"points":198},"Flow with unsanitized path",{"reason":502,"points":123},"Bundled library (Guzzle) may pose risk","2026-03-17T06:32:26.584Z",{"wat":505,"direct":514},{"assetPaths":506,"generatorPatterns":509,"scriptPaths":510,"versionParams":511},[507,508],"\u002Fwp-content\u002Fplugins\u002Ftp-media-offload-edge-cdn\u002Fassets\u002Fcss\u002Fadmin.css","\u002Fwp-content\u002Fplugins\u002Ftp-media-offload-edge-cdn\u002Fassets\u002Fjs\u002Fadmin.js",[],[508],[512,513],"tp-media-offload-edge-cdn\u002Fassets\u002Fcss\u002Fadmin.css?ver=","tp-media-offload-edge-cdn\u002Fassets\u002Fjs\u002Fadmin.js?ver=",{"cssClasses":515,"htmlComments":517,"htmlAttributes":518,"restEndpoints":522,"jsGlobals":524,"shortcodeOutput":526},[516],"toplevel_page_tp-media-offload-edge-cdn",[],[519,520,521],"data-cfr2-bucket","data-cfr2-region","data-cfr2-endpoint",[523],"\u002Fwp-json\u002Ftp-media-offload-edge-cdn\u002Fv1\u002Fsettings",[525],"window.tp_media_offload_edge_cdn_params",[]]