{"id":306382,"date":"2026-09-25T16:03:48","date_gmt":"2026-09-25T16:03:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/dilux-cloud-storage\/"},"modified":"2026-09-25T16:03:18","modified_gmt":"2026-09-25T16:03:18","slug":"diluxone-offload","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/diluxone-offload\/","author":13017021,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.2","requires":"5.1","requires_php":"7.4","requires_plugins":null,"header_name":"DiluxOne Offload \u2013 Media Storage","header_author":"Pablo Ariel Di Loreto","header_description":"Move your WordPress media to cloud object storage and serve it from there. Replaces \/uploads\/ transparently via a PHP stream wrapper.","assets_banners_color":"fbfbfb","last_updated":"2026-09-25 16:03:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/DiluxOne\/diluxone-offload-wordpress","header_author_uri":"https:\/\/diluxone.com\/plugins-wordpress","rating":0,"author_block_rating":0,"active_installs":0,"downloads":56,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"pablodiloreto","date":"2026-09-25 16:03:18","revision":3713296}},"upgrade_notice":{"1.0.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3713296,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3713296,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3713296,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3713296,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3713296,"resolution":"1","location":"assets","locale":"","width":1600,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3713296,"resolution":"2","location":"assets","locale":"","width":1600,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3713296,"resolution":"3","location":"assets","locale":"","width":1600,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3713296,"resolution":"4","location":"assets","locale":"","width":1600,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3713296,"resolution":"5","location":"assets","locale":"","width":1600,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3713296,"resolution":"6","location":"assets","locale":"","width":1600,"height":900},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3713296,"resolution":"7","location":"assets","locale":"","width":1600,"height":900},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3713296,"resolution":"8","location":"assets","locale":"","width":1600,"height":900},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3713296,"resolution":"9","location":"assets","locale":"","width":1600,"height":900}},"screenshots":{"1":"Overview: provider configured, media synced, offloading active.","2":"Cloud Provider: choosing Azure Blob Storage.","3":"Cloud Provider: entering the storage account, key and container, and testing the connection.","4":"Provider saved and ready to sync.","5":"The first sync, file by file, in the browser.","6":"Sync complete: enable offloading now or later.","7":"Offloading active: disconnect from the cloud, or delete the local copies.","8":"Settings: file-size limit, upload timeout, HTTPS for cloud URLs, debug logging.","9":"Status: plugin state, environment and provider at a glance."}},"plugin_section":[],"plugin_tags":[13289,10725,84,46891,85],"plugin_category":[50],"plugin_contributors":[181787],"plugin_business_model":[],"class_list":["post-306382","plugin","type-plugin","status-publish","hentry","plugin_tags-azure","plugin_tags-cloud-storage","plugin_tags-media","plugin_tags-offload","plugin_tags-uploads","plugin_category-media","plugin_contributors-pablodiloreto","plugin_committers-pablodiloreto"],"banners":{"banner":"https:\/\/ps.w.org\/diluxone-offload\/assets\/banner-772x250.png?rev=3713296","banner_2x":"https:\/\/ps.w.org\/diluxone-offload\/assets\/banner-1544x500.png?rev=3713296","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/diluxone-offload\/assets\/icon-128x128.png?rev=3713296","icon_2x":"https:\/\/ps.w.org\/diluxone-offload\/assets\/icon-256x256.png?rev=3713296","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/diluxone-offload\/assets\/screenshot-1.png?rev=3713296","caption":"Overview: provider configured, media synced, offloading active."},{"src":"https:\/\/ps.w.org\/diluxone-offload\/assets\/screenshot-2.png?rev=3713296","caption":"Cloud Provider: choosing Azure Blob Storage."},{"src":"https:\/\/ps.w.org\/diluxone-offload\/assets\/screenshot-3.png?rev=3713296","caption":"Cloud Provider: entering the storage account, key and container, and testing the connection."},{"src":"https:\/\/ps.w.org\/diluxone-offload\/assets\/screenshot-4.png?rev=3713296","caption":"Provider saved and ready to sync."},{"src":"https:\/\/ps.w.org\/diluxone-offload\/assets\/screenshot-5.png?rev=3713296","caption":"The first sync, file by file, in the browser."},{"src":"https:\/\/ps.w.org\/diluxone-offload\/assets\/screenshot-6.png?rev=3713296","caption":"Sync complete: enable offloading now or later."},{"src":"https:\/\/ps.w.org\/diluxone-offload\/assets\/screenshot-7.png?rev=3713296","caption":"Offloading active: disconnect from the cloud, or delete the local copies."},{"src":"https:\/\/ps.w.org\/diluxone-offload\/assets\/screenshot-8.png?rev=3713296","caption":"Settings: file-size limit, upload timeout, HTTPS for cloud URLs, debug logging."},{"src":"https:\/\/ps.w.org\/diluxone-offload\/assets\/screenshot-9.png?rev=3713296","caption":"Status: plugin state, environment and provider at a glance."}],"raw_content":"<!--section=description-->\n<p>DiluxOne Offload moves your WordPress media library to Azure Blob Storage and serves files directly from the cloud \u2014 without breaking the Media Library UI, plugins, or existing content.<\/p>\n\n<p>The plugin uses a custom PHP stream wrapper to intercept every read and write to <code>\/wp-content\/uploads\/<\/code>, so WordPress, WooCommerce, page builders, image editors, and any plugin that calls standard filesystem functions (<code>fopen<\/code>, <code>file_get_contents<\/code>, <code>unlink<\/code>, etc.) keep working unchanged.<\/p>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li><strong>Azure Blob Storage<\/strong> \u2014 bring your own storage account; nothing is shared with anyone else.<\/li>\n<li><strong>Transparent stream wrapper<\/strong> \u2014 no URL rewriting, no regex on post content, no database migration required for URLs.<\/li>\n<li><strong>Sync with resumable state machine<\/strong> \u2014 start, cancel, resume after an interruption, retry failed files, resync from scratch.<\/li>\n<li><strong>Offloading mode<\/strong> \u2014 after a successful sync you can delete the local copies to free disk space; the stream wrapper keeps everything working.<\/li>\n<li><strong>Connection health monitoring<\/strong> \u2014 when the cloud is unreachable, new uploads are refused with a clear error instead of landing somewhere else, and a banner on the plugin's admin pages says why until it recovers.<\/li>\n<li><strong>No plugin data on disk<\/strong> \u2014 no cache, log or data files anywhere on the server. The one time the plugin writes to the uploads directory is when you disconnect, to copy your own media back to where WordPress expects it.<\/li>\n<li><strong>Large files don't need large memory<\/strong> \u2014 a download goes straight to disk, and an upload is sent in 4 MiB blocks, so PHP never holds more than one block of a file at a time and a video does not trip <code>memory_limit<\/code>.<\/li>\n<li><strong>Multisite aware<\/strong> \u2014 network activation supported; each site keeps its own configuration and file tracking, and its objects live under their own prefix in the container (<code>uploads\/<\/code> for the main site, <code>uploads\/sites\/&lt;id&gt;\/<\/code> for the others, the same layout WordPress uses on disk), so several sites can share one container without ever sharing a key.<\/li>\n<li><strong>Quiet by default<\/strong> \u2014 with <code>WP_DEBUG<\/code> off and the Settings toggle off the plugin writes nothing to the PHP error log, at any level. <code>WP_DEBUG<\/code> turns on errors and warnings; the toggle adds the informational lines.<\/li>\n<\/ul>\n\n<h4>Why a stream wrapper instead of URL rewriting<\/h4>\n\n<p>Most offload plugins rewrite media URLs in post content, which breaks when you switch providers, move domains, or restore from a backup. DiluxOne Offload leaves URLs alone and rewrites reads\/writes at the filesystem layer, so your content stays portable.<\/p>\n\n<h4>Known limitations<\/h4>\n\n<ul>\n<li>One provider: Azure Blob Storage. The container must allow anonymous read of blobs (public access level <em>Blob<\/em>); a private container is refused.<\/li>\n<li>The initial sync runs in your browser tab and stops if you close it; it resumes where it left off. Nothing runs in the background or via cron.<\/li>\n<li>Files above the <strong>Maximum File Size<\/strong> setting (20 MB by default, up to 500 MB) are skipped by the initial sync.<\/li>\n<li>While the cloud is unreachable, new uploads fail. There is deliberately no local fallback.<\/li>\n<li>No CDN or custom-domain option: media is served from your storage account's URL.<\/li>\n<li><strong>Disconnect from Cloud<\/strong> needs a writable uploads directory and enough disk for your media.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to Azure Blob Storage, a third-party cloud storage service, to store and serve your media files. <strong>Nothing is sent anywhere until you configure it yourself<\/strong> in the <em>Cloud Provider<\/em> tab, with an account and credentials you supply. The plugin contacts no other service: it sends no telemetry, no usage data and no licence check to the author or to anyone else.<\/p>\n\n<h4>Azure Blob Storage<\/h4>\n\n<p>What it is used for: storing your WordPress media files outside your server and serving them from the cloud.<\/p>\n\n<p>Where requests go: the Azure Blob REST API at blob.core.windows.net \u2014 specifically your own account's host, <code>https:\/\/ACCOUNT.blob.core.windows.net<\/code>, where ACCOUNT is the storage account name you enter in the settings.<\/p>\n\n<p>What data is sent: your media files themselves, together with their relative path, size and MIME type. The storage account key you entered never leaves your server \u2014 it is used locally to compute the signature that authenticates each request. No personal data about your visitors or your site's users is sent, and nothing at all about your site reaches the plugin's author.<\/p>\n\n<p>When requests happen:<\/p>\n\n<ul>\n<li>During the initial sync \u2014 uploading existing files from <code>\/wp-content\/uploads\/<\/code> to your container.<\/li>\n<li>On every new media upload \u2014 writing the file to the cloud through the stream wrapper.<\/li>\n<li>On read or delete \u2014 when WordPress, or any plugin using filesystem APIs against <code>\/uploads\/<\/code>, reads or deletes a file. This is also the only front-end traffic: a form or a review that uploads a file goes through the same stream wrapper.<\/li>\n<li>When the plugin lists your container \u2014 for the Overview statistics (cached for five minutes) and for the scan that precedes <strong>Disconnect from Cloud<\/strong>.<\/li>\n<li>A connection-health check \u2014 a small GET for your container's properties \u2014 when you open one of the plugin's admin pages, at most once every 5 minutes, and again from a write that follows three consecutive failures, so uploads resume on their own when the cloud is back. Nothing runs via cron.<\/li>\n<li>During <strong>Disconnect from Cloud<\/strong> \u2014 downloading your files back to the server.<\/li>\n<\/ul>\n\n<p>This is <strong>your own Azure account<\/strong>, under your own agreement with Microsoft. Neither DiluxOne nor the plugin's author is a party to it and neither has any access to your data. Your use of the service is subject to Microsoft's terms:<\/p>\n\n<ul>\n<li>Service: <a href=\"https:\/\/azure.microsoft.com\/services\/storage\/blobs\/\">Azure Blob Storage<\/a> (https:\/\/azure.microsoft.com\/services\/storage\/blobs\/)<\/li>\n<li>Terms of Service: <a href=\"https:\/\/www.microsoft.com\/licensing\/terms\/productoffering\/MicrosoftAzure\">Microsoft Online Services Terms<\/a> (https:\/\/www.microsoft.com\/licensing\/terms\/productoffering\/MicrosoftAzure)<\/li>\n<li>Privacy Policy: <a href=\"https:\/\/www.microsoft.com\/privacy\/privacystatement\">Microsoft Privacy Statement<\/a> (https:\/\/www.microsoft.com\/privacy\/privacystatement)<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>diluxone-offload<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install via the WordPress Plugins screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Open the new <strong>DiluxOne Offload<\/strong> menu in the admin sidebar.<\/li>\n<li>Go to <strong>Cloud Provider<\/strong>, select Microsoft Azure Blob Storage, enter the storage account, container and access key, and click <strong>Test Connection<\/strong>.<\/li>\n<li>Save the configuration.<\/li>\n<li>Go to <strong>Sync &amp; Offloading<\/strong>, run the initial sync, and enable offloading when sync is complete.<\/li>\n<\/ol>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 5.1 or higher.<\/li>\n<li>PHP 7.4 or higher.<\/li>\n<li><code>ext-curl<\/code> and <code>ext-openssl<\/code> enabled.<\/li>\n<li>A writable uploads directory only for <strong>Disconnect from Cloud<\/strong>, when your media is copied back. Transfers use the PHP temporary directory for their scratch files, never <code>uploads\/<\/code>.<\/li>\n<li>An Azure Blob Storage account, a container whose public access level is <strong>Blob<\/strong> (anonymous read access for blobs, so browsers can load your media straight from it), and the account's access key. <strong>Test Connection<\/strong> refuses a private container and says so.<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20modify%20my%20existing%20media%20urls%20in%20the%20database%3F\"><h3>Does this plugin modify my existing media URLs in the database?<\/h3><\/dt>\n<dd><p>No. The stream wrapper intercepts filesystem calls transparently \u2014 your post content, the <code>wp_posts<\/code> table, and the <code>wp_postmeta<\/code> table are never rewritten.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20cloud%20is%20temporarily%20unreachable%3F\"><h3>What happens if the cloud is temporarily unreachable?<\/h3><\/dt>\n<dd><p>The plugin monitors connection health. While the cloud is unreachable, a new upload fails with WordPress's own \"could not be moved\" error and nothing is saved anywhere, so you never end up with a file that looks uploaded but isn't. A banner on the plugin's admin pages explains the failure. Files already in the cloud keep being served from the storage account URL. The plugin re-checks the connection at most every five minutes and uploads resume on their own once it is back.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20write%20any%20files%20to%20my%20server%3F\"><h3>Does the plugin write any files to my server?<\/h3><\/dt>\n<dd><p>Not for itself: it has no cache, log or data files on disk; everything it needs lives in the WordPress options table and its own database table. Your media is written by WordPress core through the plugin's stream wrapper to the cloud, passing through a temporary file in the PHP temp directory that is deleted right after the upload.<\/p>\n\n<p>The one operation that writes to the server is <strong>Sync &amp; Offloading \u2192 Disconnect from Cloud<\/strong>. It copies your media back from the container to the exact uploads-directory paths WordPress has on record (resolved at runtime with <code>wp_upload_dir()<\/code>), so the Media Library works again without the plugin. It restores only what sits under the <code>uploads\/<\/code> prefix of your own container, never a script or executable file name (PHP, JavaScript, HTML, shell or Windows executables) whatever put it there, and it runs only when you click it.<\/p><\/dd>\n<dt id=\"can%20i%20move%20to%20another%20storage%20account%20or%20container%20later%3F\"><h3>Can I move to another storage account or container later?<\/h3><\/dt>\n<dd><p>Yes. Remove the current provider configuration from the admin, enter the new account and container, run a full resync, and the plugin starts serving from the new location. No URL rewriting required.<\/p><\/dd>\n<dt id=\"will%20this%20work%20with%20woocommerce%20%2F%20elementor%20%2F%20image%20editors%3F\"><h3>Will this work with WooCommerce \/ Elementor \/ image editors?<\/h3><\/dt>\n<dd><p>Yes. Because the stream wrapper operates at the filesystem layer, any plugin that reads or writes files under <code>\/uploads\/<\/code> using standard PHP functions works unchanged.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20delete%20my%20local%20files%20automatically%3F\"><h3>Does the plugin delete my local files automatically?<\/h3><\/dt>\n<dd><p>Only if you explicitly opt in. After a successful sync you can click <strong>Delete Local Files<\/strong> in the Sync &amp; Offloading tab. Until you do that, files are kept in both locations. A file that is empty (0 bytes) when the sync scans it is skipped: it is neither uploaded nor tracked, so <strong>Delete Local Files<\/strong> leaves it alone.<\/p><\/dd>\n<dt id=\"if%20i%20delete%20a%20file%20from%20the%20media%20library%2C%20is%20it%20deleted%20from%20the%20cloud%20too%3F\"><h3>If I delete a file from the Media Library, is it deleted from the cloud too?<\/h3><\/dt>\n<dd><p>Yes, while offloading is active: the stream wrapper turns the deletion into a delete on your container, thumbnails included. If you have synced but not yet enabled offloading, WordPress deletes only the local copy; the copy already in your container is not removed automatically.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20uninstall%20the%20plugin%3F\"><h3>What happens when I uninstall the plugin?<\/h3><\/dt>\n<dd><p>Deleting the plugin from the Plugins screen removes everything it created in your database: its options (all prefixed <code>diluxone_offload_<\/code>), its transients and its file-tracking table (<code>diluxone_offload_files<\/code>, with your table prefix) \u2014 on every site of a network. Deactivating alone keeps all of that, so you can deactivate and reactivate without losing your configuration.<\/p>\n\n<p>Your media files are never touched by uninstalling: whatever is in <code>\/wp-content\/uploads\/<\/code> stays there, and whatever is in your container stays in your container. If offloading was active and local copies had been deleted, download them first with <strong>Sync &amp; Offloading \u2192 Disconnect from Cloud<\/strong>, otherwise WordPress will be pointing at files that are no longer on the server.<\/p><\/dd>\n<dt id=\"how%20do%20i%20enable%20verbose%20debug%20logging%3F\"><h3>How do I enable verbose debug logging?<\/h3><\/dt>\n<dd><p>Go to <strong>DiluxOne Offload \u2192 Settings \u2192 Enable detailed debug logging<\/strong>. Logs are written to the standard PHP <code>error_log<\/code> destination. Disable it in production unless you are actively troubleshooting \u2014 it may impact performance.<\/p>\n\n<p>With that setting off and <code>WP_DEBUG<\/code> off, the plugin writes nothing to the PHP error log at all, at any level. With <code>WP_DEBUG<\/code> on it writes errors and warnings; the setting adds the rest.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20multisite%20compatible%3F\"><h3>Is the plugin multisite compatible?<\/h3><\/dt>\n<dd><p>Yes. It can be network-activated; each site then has its own Cloud Provider configuration and its own file-tracking table, so different sites can use different containers or accounts \u2014 or share one: a site's objects are stored under <code>uploads\/sites\/&lt;id&gt;\/<\/code> (the main site under <code>uploads\/<\/code>), and each site only ever lists, syncs and restores its own prefix.<\/p><\/dd>\n<dt id=\"how%20are%20my%20azure%20credentials%20stored%3F\"><h3>How are my Azure credentials stored?<\/h3><\/dt>\n<dd><p>The Azure access key is encrypted with AES-256-GCM before it is written to the WordPress options table. The encryption key is derived from your site's WordPress salts (<code>AUTH_KEY<\/code> \/ <code>SECURE_AUTH_KEY<\/code> and the corresponding salts in <code>wp-config.php<\/code>), so as long as those salts are defined in <code>wp-config.php<\/code> (as WordPress recommends) a database dump on its own is not enough to recover the credentials \u2014 the attacker also needs filesystem access to <code>wp-config.php<\/code>.<\/p>\n\n<p>If you ever rotate the WordPress salts, the existing encrypted credentials become unreadable; the plugin will surface the provider as \"not configured\" and you simply re-enter the credentials in the <em>Cloud Provider<\/em> tab. There is intentionally no plaintext fallback.<\/p>\n\n<p>Requirements: PHP <code>ext-openssl<\/code> (enabled by default on virtually every host).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<p>First public release.<\/p>\n\n<ul>\n<li>Azure Blob Storage provider with your own account and key; media served from <code>https:\/\/&lt;account&gt;.blob.core.windows.net<\/code>.<\/li>\n<li>Transparent PHP stream wrapper on <code>\/wp-content\/uploads\/<\/code>: no URL rewriting, no database migration.<\/li>\n<li>Sync with cancel, resume and retry; optional deletion of the local copies once synced; <strong>Disconnect from Cloud<\/strong> brings everything back.<\/li>\n<li>Connection health: when the cloud is unreachable an upload fails with a clear error and nothing is written elsewhere.<\/li>\n<li>Streaming transfers: downloads go straight to disk and uploads go in 4 MiB blocks, so large files do not need large memory.<\/li>\n<li>\"Force HTTPS for cloud storage URLs\" option; multisite with per-site configuration; credentials encrypted at rest (AES-256-GCM, key derived from the site's salts); quiet unless <code>WP_DEBUG<\/code> or the debug toggle is on.<\/li>\n<li>Uninstalling removes the plugin's options, transients and table; media files are never touched.<\/li>\n<\/ul>","raw_excerpt":"Move your media to cloud object storage and serve it from there. Replaces \/uploads\/ transparently, with no URL rewriting.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/306382","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=306382"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pablodiloreto"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=306382"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=306382"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=306382"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=306382"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=306382"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=306382"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}