{"id":287850,"date":"2026-03-23T21:09:30","date_gmt":"2026-03-23T21:09:30","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/r2-storage-manager-for-cloudflare\/"},"modified":"2026-03-23T21:20:02","modified_gmt":"2026-03-23T21:20:02","slug":"r2-storage-manager-for-cloudflare","status":"publish","type":"plugin","link":"https:\/\/ar.wordpress.org\/plugins\/r2-storage-manager-for-cloudflare\/","author":23462503,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.1","stable_tag":"1.0.1","tested":"6.9.4","requires":"4.6","requires_php":"7.4","requires_plugins":null,"header_name":"R2 Storage Manager for Cloudflare","header_author":"R2Suites","header_description":"Connect WordPress to Cloudflare R2. Upload, manage files, and securely download them using temporary signed URLs (Lite Version).","assets_banners_color":"f9734b","last_updated":"2026-03-23 21:20:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/r2-storage-manager-for-cloudflare\/","header_author_uri":"https:\/\/www.r2suites.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":79,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"r2suites","date":"2026-03-23 21:20:02"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3489447,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3489447,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3489447,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3489447,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3489447,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3489447,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3489447,"resolution":"3","location":"assets","locale":""}},"screenshots":{"1":"Dashboard overview.","2":"Settings page.","3":"Upload interface."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[3882,255106,46891,217,2216],"plugin_category":[59],"plugin_contributors":[258474],"plugin_business_model":[],"class_list":["post-287850","plugin","type-plugin","status-publish","hentry","plugin_tags-cloudflare","plugin_tags-cloudflare-r2","plugin_tags-offload","plugin_tags-s3","plugin_tags-storage","plugin_category-utilities-and-tools","plugin_contributors-r2suites","plugin_committers-r2suites"],"banners":{"banner":"https:\/\/ps.w.org\/r2-storage-manager-for-cloudflare\/assets\/banner-772x250.png?rev=3489447","banner_2x":"https:\/\/ps.w.org\/r2-storage-manager-for-cloudflare\/assets\/banner-1544x500.png?rev=3489447","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/r2-storage-manager-for-cloudflare\/assets\/icon-128x128.png?rev=3489447","icon_2x":"https:\/\/ps.w.org\/r2-storage-manager-for-cloudflare\/assets\/icon-256x256.png?rev=3489447","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/r2-storage-manager-for-cloudflare\/assets\/screenshot-1.png?rev=3489447","caption":"Dashboard overview."},{"src":"https:\/\/ps.w.org\/r2-storage-manager-for-cloudflare\/assets\/screenshot-2.png?rev=3489447","caption":"Settings page."},{"src":"https:\/\/ps.w.org\/r2-storage-manager-for-cloudflare\/assets\/screenshot-3.png?rev=3489447","caption":"Upload interface."}],"raw_content":"<!--section=description-->\n<p>Connect WordPress to Cloudflare R2 Object Storage using its fully S3-compatible API. This plugin allows direct uploads to R2, the generation of signed URLs, and the ability to browse stored objects from within the WordPress dashboard.<\/p>\n\n<p>The plugin allows direct uploads to R2, the generation of signed URLs, and the ability to browse stored objects from within the WordPress dashboard.<\/p>\n\n<h3>Features (Lite)<\/h3>\n\n<ul>\n<li><strong>Direct Upload<\/strong> \u2013 Upload files directly to your Cloudflare R2 bucket.<\/li>\n<li><strong>REST API Downloads<\/strong> \u2013 Secure, shareable download links handled via standard WP REST endpoints.<\/li>\n<li><strong>Configurable Access<\/strong> \u2013 Adjustable signed-URL expiration (default 300s).<\/li>\n<li><strong>File Browser<\/strong> \u2013 View objects stored in your R2 bucket.<\/li>\n<li><strong>S3 Compatible<\/strong> \u2013 Uses Cloudflare R2\u2019s S3-compatible API.<\/li>\n<\/ul>\n\n<h3>Pro Version (Optional)<\/h3>\n\n<p>Additional features are available in the optional Pro edition:<\/p>\n\n<ul>\n<li><strong>Unlimited Uploads<\/strong> \u2013 Remove upload limitations.<\/li>\n<li><strong>Drag &amp; Drop Upload<\/strong> \u2013 Modern upload interface with multipart support.<\/li>\n<li><strong>Advanced File Manager<\/strong> \u2013 Folder organisation and enhanced object management.<\/li>\n<li><strong>User Download Quotas<\/strong> \u2013 Define download limits per user.<\/li>\n<li><strong>Download Statistics &amp; Logs<\/strong> \u2013 Track file access activity.<\/li>\n<li><strong>Extended Security Controls<\/strong> \u2013 Custom expiry rules, IP restrictions, referer filters, and geo-blocking.<\/li>\n<li><strong>Priority Support<\/strong> \u2013 Direct assistance via email.<\/li>\n<li><strong>Developer Tools<\/strong> \u2013 Webhooks and extended API automation.<\/li>\n<\/ul>\n\n<p>More information: https:\/\/www.r2suites.com\/products\/wordpress\/cloudflare-r2-storage-manager-pro<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to Cloudflare R2 Object Storage to store and retrieve files.<\/p>\n\n<p>Service provider: Cloudflare, Inc.\nService URL: https:\/\/www.cloudflare.com\/\nPrivacy Policy: https:\/\/www.cloudflare.com\/privacypolicy\/<\/p>\n\n<p>Purpose:\nStorage and retrieval of files via the S3-compatible API.<\/p>\n\n<p>Data sent:\n* Access Key ID\n* Secret Access Key\n* Bucket name\n* Object upload and retrieval requests<\/p>\n\n<p>When data sent:\nOnly after the administrator configures credentials and initiates uploads or file operations.<\/p>\n\n<h3>Shortcodes<\/h3>\n\n<p>[cr2sm_download file=\"lite\/file.pdf\" label=\"Download\" class=\"btn\"]<\/p>\n\n<p>Example:\n[cr2sm_download file=\"lite\/example.pdf\"]<\/p>\n\n<p>file  \u2013 (required) File name stored in your R2 bucket. Note: In the Lite version, files must be located in the \"\/lite\/\" container.\nlabel \u2013 (optional) Button text (default: \"Download\").\nclass \u2013 (optional) CSS class for styling.<\/p>\n\n<p>This shortcode generates a secure signed download link handled via the Secure REST API endpoint.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/r2-storage-manager-for-cloudflare<\/code> or install it via the Plugins screen.<\/li>\n<li>Activate the plugin through <strong>Plugins \u2192 Installed Plugins<\/strong>.<\/li>\n<li>Navigate to <strong>R2 Storage Lite \u2192 Settings<\/strong> and enter:\n\n<ul>\n<li>Endpoint  <\/li>\n<li>Access Key  <\/li>\n<li>Secret Key  <\/li>\n<li>Bucket Name<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20cloudflare%20account%3F\"><h3>Do I need a Cloudflare account?<\/h3><\/dt>\n<dd><p>Yes. Cloudflare R2 requires an active Cloudflare account. The service includes a generous free tier suitable for most use cases.<\/p><\/dd>\n<dt id=\"what%20information%20do%20i%20need%20to%20connect%20wordpress%20to%20r2%3F\"><h3>What information do I need to connect WordPress to R2?<\/h3><\/dt>\n<dd><p>You will need:\n* API Endpoint<br \/>\n* Access Key ID<br \/>\n* Secret Access Key<br \/>\n* Bucket Name<br \/>\nThese values can be found in the Cloudflare dashboard under R2 \u2192 Overview or Tokens.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20offload%20the%20wordpress%20media%20library%3F\"><h3>Does this plugin offload the WordPress Media Library?<\/h3><\/dt>\n<dd><p>No. Media Library offload is not part of the Lite or Pro versions.<br \/>\nFiles uploaded with this plugin are handled separately from WordPress media.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20integrate%20with%20woocommerce%3F\"><h3>Does the plugin integrate with WooCommerce?<\/h3><\/dt>\n<dd><p>No. WooCommerce integration is not provided in the current versions.<\/p><\/dd>\n<dt id=\"how%20are%20files%20uploaded%20in%20the%20lite%20version%3F\"><h3>How are files uploaded in the Lite version?<\/h3><\/dt>\n<dd><p>Lite provides a simple, single-file upload method that follows your server\u2019s PHP upload limits.<\/p><\/dd>\n<dt id=\"what%20are%20the%20limitations%20of%20single-file%20uploads%3F\"><h3>What are the limitations of single-file uploads?<\/h3><\/dt>\n<dd><p>Single-file uploads depend on your server configuration (php.ini):<br \/>\n    upload_max_filesize, <code>post_max_size<\/code>, and <code>memory_limit<\/code>.<br \/>\nFor larger files, the Pro version supports multipart uploads.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20folders%20or%20subdirectories%3F\"><h3>Does the plugin support folders or subdirectories?<\/h3><\/dt>\n<dd><p>Lite is limited to root-level files and the <code>\/lite\/<\/code> container.<br \/>\nFolder management and directory navigation are available in the Pro version.<\/p><\/dd>\n<dt id=\"can%20users%20download%20files%20without%20authentication%3F\"><h3>Can users download files without authentication?<\/h3><\/dt>\n<dd><p>Yes. Download URLs can be accessed publicly unless you enable the \u201cRequire Login\u201d option.<\/p><\/dd>\n<dt id=\"where%20are%20my%20credentials%20stored%3F%20are%20they%20secure%3F\"><h3>Where are my credentials stored? Are they secure?<\/h3><\/dt>\n<dd><p>Credentials are stored using the WordPress options API and are not transmitted to any third party except Cloudflare R2. They are only used to authenticate requests to your configured bucket.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20data%20to%20third-party%20servers%3F\"><h3>Does the plugin send data to third-party servers?<\/h3><\/dt>\n<dd><p>No. The plugin communicates exclusively with Cloudflare R2.<br \/>\nNo telemetry, analytics, or tracking is performed.<\/p><\/dd>\n<dt id=\"can%20i%20browse%20files%20stored%20in%20my%20bucket%3F\"><h3>Can I browse files stored in my bucket?<\/h3><\/dt>\n<dd><p>Yes. The Lite version includes a basic file list.<br \/>\nThe Pro version includes a full file manager with folders, sorting, and advanced actions.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20credentials%20are%20incorrect%3F\"><h3>What happens if credentials are incorrect?<\/h3><\/dt>\n<dd><p>The plugin includes connection testing and clear error messages to help validate your configuration.<\/p><\/dd>\n<dt id=\"does%20uninstalling%20the%20plugin%20delete%20my%20files%3F\"><h3>Does uninstalling the plugin delete my files?<\/h3><\/dt>\n<dd><p>No. Removing the plugin does not affect your R2 bucket.<br \/>\nYou may optionally choose to keep or remove your plugin settings.<\/p><\/dd>\n<dt id=\"is%20multisite%20supported%3F\"><h3>Is multisite supported?<\/h3><\/dt>\n<dd><p>Yes. WordPress multisite installations are supported.<br \/>\nEach site maintains its own configuration.<\/p><\/dd>\n<dt id=\"what%20features%20are%20only%20available%20in%20the%20pro%20version%3F\"><h3>What features are only available in the Pro version?<\/h3><\/dt>\n<dd><p>The Pro version includes:\n* Unlimited uploads<br \/>\n* Drag &amp; Drop \/ Multipart upload<br \/>\n* Advanced File Manager (folders and actions)<br \/>\n* User download quotas<br \/>\n* Download statistics and logs<br \/>\n* Advanced security tools (expiry rules, IP restrictions, referer filters)<br \/>\n* Priority email support<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20compatible%20with%20caching%20plugins%3F\"><h3>Is the plugin compatible with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. Signed URLs are generated dynamically and operate independently of local cache.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20suitable%20for%20hosting%20large%20files%3F\"><h3>Is this plugin suitable for hosting large files?<\/h3><\/dt>\n<dd><p>Yes. Large files are supported in the Pro version through multipart uploads.<br \/>\nLite uploads depend on your server\u2019s PHP limits.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Security &amp; Compliance hardening.<\/li>\n<li>Fixed nonce validation for file sorting in admin.<\/li>\n<li>Migrated download endpoint to secure REST API.<\/li>\n<li>Hardened $_FILES handling logic.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with REST API download endpoint.<\/li>\n<\/ul>","raw_excerpt":"Connect WordPress to Cloudflare R2. Upload files and generate secure signed download links.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/287850","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=287850"}],"author":[{"embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/r2suites"}],"wp:attachment":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=287850"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=287850"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=287850"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=287850"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=287850"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=287850"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}