Title: Defyn Media Offload
Author: Defyn
Published: <strong>2026 年 6 月 26 日</strong>
Last modified: 2026 年 6 月 26 日

---

搜尋外掛

![](https://ps.w.org/defyn-media-offload/assets/banner-772x250.png?rev=3587217)

![](https://ps.w.org/defyn-media-offload/assets/icon.svg?rev=3587217)

# Defyn Media Offload

 由 [Defyn](https://profiles.wordpress.org/defyndigital/) 開發

[下載](https://downloads.wordpress.org/plugin/defyn-media-offload.1.0.0.zip)

 * [詳細資料](https://tw.wordpress.org/plugins/defyn-media-offload/#description)
 * [使用者評論](https://tw.wordpress.org/plugins/defyn-media-offload/#reviews)
 *  [安裝方式](https://tw.wordpress.org/plugins/defyn-media-offload/#installation)
 * [開發資訊](https://tw.wordpress.org/plugins/defyn-media-offload/#developers)

 [技術支援](https://wordpress.org/support/plugin/defyn-media-offload/)

## 外掛說明

Defyn Media Offload moves your WordPress media library to S3-compatible object storage
and serves every image, video and document from a fast content delivery network (
CDN), then optionally deletes the local copies so your site fits within strict host
disk and storage limits.

It works with Amazon S3, DigitalOcean Spaces, Cloudflare R2, Wasabi, Backblaze B2,
Google Cloud Storage (in S3 mode), MinIO and any other S3-compatible object store.
Offloading your uploads to cloud storage frees up server disk space, shrinks your
backups, lowers bandwidth costs, and lets a global CDN deliver your images faster.

It was built for a large WooCommerce and multi-vendor marketplace on managed WordPress(
where Jetpack’s image CDN virtualises some thumbnail sizes), so it is hardened against
the edge cases that break naive media offload plugins.

**Key features**

 * Automatic offload on upload, after all thumbnail sizes are generated, including
   front-end (vendor) uploads.
 * Serves product images, galleries, variation images, responsive `srcset`, REST
   API URLs and content-embedded images from the CDN.
 * Resumable, cursor-based bulk migration for very large libraries (survives dropped
   SSH sessions). WP-CLI is the supported path; a browser-driven runner and Action
   Scheduler background runner are also provided.
 * Optional, decoupled “remove local” pass so migration and deletion stay safe and
   reversible.
 * Optional mirror-delete: removing an attachment removes its objects from the store.
 * Handles Jetpack “virtual” thumbnail sizes (skip-and-log, never stalls).
 * WooCommerce downloadable/protected files are stored privately and never made 
   public-read.
 * Works with the AWS SDK for PHP v3, namespace-isolated with php-scoper so it never
   conflicts with other plugins’ bundled AWS SDK.

**Configuration**

For best security, define credentials as constants in `wp-config.php`:

    ```
    define( 'OSMO_KEY',      'your-access-key' );
    define( 'OSMO_SECRET',   'your-secret-key' );
    define( 'OSMO_BUCKET',   'your-bucket' );
    define( 'OSMO_REGION',   'syd1' );
    define( 'OSMO_ENDPOINT', 'https://syd1.digitaloceanspaces.com' );
    define( 'OSMO_CDN',      'https://cdn.example.com' );
    ```

Otherwise enter them on **Media  Media Offload**.

### External services

This plugin connects to one external service: the S3-compatible object storage
 
endpoint that **you** configure (for example DigitalOcean Spaces, Amazon S3, Wasabi,
or a self-hosted MinIO server). It is used to store and serve your media files.

 * What is sent, and when: when you upload media (or run a migration), the media
   
   files and their object keys (the uploads-relative path, e.g. 2026/06/image.jpg)
   are uploaded to the bucket you configured, using the access key and secret you
   provide. URL rewriting and verification read object keys back from the same bucket.
 * The plugin does not contact any other server. It does not collect analytics,
   
   telemetry, or usage data, and it never “phones home” to the author.
 * You must supply your own credentials and accept the terms and privacy policy
   
   of whichever storage provider you choose. DigitalOcean Spaces: https://www.digitalocean.
   com/legal/terms-of-service-agreement / https://www.digitalocean.com/legal/privacy-
   policy . Amazon S3: https://aws.amazon.com/service-terms/ / https://aws.amazon.
   com/privacy/ .

### Third-party libraries

This plugin bundles the AWS SDK for PHP v3 (Apache License 2.0, GPL-compatible)

and its dependencies (Guzzle, PSR interfaces, JMESPath, Symfony polyfills). The 
SDK is namespace-isolated under `OSMO\Vendor\` using php-scoper so it never conflicts
with an AWS SDK bundled by another plugin. This is namespacing, not obfuscation,
and the bundled PHP remains fully human-readable.

The full source code and the build tooling (composer.json, scoper.inc.php,
 build.
sh, and the post-scope patch helpers in bin/) are available so the bundled vendor/
directory can be reproduced from scratch with `bash build.sh`.

## 安裝方式

 1. Build the bundled AWS SDK once (developer step): run `composer install` then `bash
    build.sh` in the plugin directory. Release ZIPs already include the scoped `vendor/`
    directory.
 2. Upload the plugin to `wp-content/plugins/` and activate it.
 3. Go to **Media  Media Offload**, enter your credentials (or define the `OSMO_*` 
    constants), and click **Test connection**.
 4. Run the bulk migration: `wp osmo offload --all`, verify with `wp osmo verify`, 
    then optionally `wp osmo remove-local --all`.

## 常見問題集

### Does it work with DigitalOcean Spaces?

Yes. Set the region (e.g. `syd1`), the endpoint (`https://syd1.digitaloceanspaces.
com`) and your CDN base. Any S3-compatible store works.

### Will it break Jetpack / WordPress.com image handling?

Turn off Jetpack’s Site Accelerator (image CDN) so real thumbnail files exist to
offload. The plugin also detects Jetpack “virtual” sizes and skips them rather than
stalling. Only this plugin rewrites image URLs.

### Is removing local files reversible?

The objects remain in your store, and `wp osmo` / the admin can re-download them.
Keep backups until you are confident.

### What about WooCommerce downloadable products?

Protected download files are stored with a private ACL and continue to serve through
WooCommerce locally; they are never exposed public-read.

## 使用者評論

這個外掛目前沒有任何使用者評論。

## 參與者及開發者

以下人員參與了開源軟體〈Defyn Media Offload〉的開發相關工作。

參與者

 *   [ Defyn ](https://profiles.wordpress.org/defyndigital/)

[將〈Defyn Media Offload〉外掛本地化為台灣繁體中文版](https://translate.wordpress.org/projects/wp-plugins/defyn-media-offload)

### 對開發相關資訊感興趣？

任何人均可[瀏覽程式碼](https://plugins.trac.wordpress.org/browser/defyn-media-offload/)、
查看 [SVN 存放庫](https://plugins.svn.wordpress.org/defyn-media-offload/)，或透過
[RSS](https://plugins.trac.wordpress.org/log/defyn-media-offload/?limit=100&mode=stop_on_copy&format=rss)
訂閱[開發記錄](https://plugins.trac.wordpress.org/log/defyn-media-offload/)。

## 變更記錄

#### 1.0.0

 * Initial release.

## 中繼資料

 *  版本 **1.0.0**
 *  最後更新 **2 個月前**
 *  啟用安裝數 **少於 10 次**
 *  WordPress 版本需求 ** 6.0 或更新版本 **
 *  已測試相容的 WordPress 版本 **7.0.4**
 *  PHP 版本需求 ** 8.1 或更新版本 **
 *  語言
 * [English (US)](https://wordpress.org/plugins/defyn-media-offload/)
 * 標籤:
 * [cdn](https://tw.wordpress.org/plugins/tags/cdn/)[cloud storage](https://tw.wordpress.org/plugins/tags/cloud-storage/)
   [digitalocean spaces](https://tw.wordpress.org/plugins/tags/digitalocean-spaces/)
   [media offload](https://tw.wordpress.org/plugins/tags/media-offload/)[s3](https://tw.wordpress.org/plugins/tags/s3/)
 *  [進階檢視](https://tw.wordpress.org/plugins/defyn-media-offload/advanced/)

## 評分

這個項目尚無任何評論記錄。

[撰寫評分](https://wordpress.org/support/plugin/defyn-media-offload/reviews/#new-post)

[查看全部使用者評論](https://wordpress.org/support/plugin/defyn-media-offload/reviews/)

## 參與者

 *   [ Defyn ](https://profiles.wordpress.org/defyndigital/)

## 技術支援

使用者可在技術支援論壇提出意見反應或使用問題。

 [檢視技術支援論壇](https://wordpress.org/support/plugin/defyn-media-offload/)