LEOSP - 通用WordPress对象存储
WordPress通用对象存储插件。
★ 1stars
0forks
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/laobuluo/leosp/archive/refs/heads/main.zipLEOSP 是一款基于 AWS SDK 的通用 S3 兼容对象存储插件,用于将 WordPress 媒体文件从本地服务器分离到对象存储,降低磁盘占用,提升静态资源分发能力。
适用于 AWS S3、腾讯云 COS、阿里云 OSS、七牛云、Cloudflare R2 及其他 S3 兼容服务。
插件信息
| 类目 | 信息 |
|---|---|
| 插件更新地址 | https://www.laojiang.me/7329.html |
| 团队成员 | 老蒋、老赵、CNJOEL、木村 |
| 支持网站 | 乐在云、主机评价网 |
| 建站资源推荐 | 便宜VPS推荐、美国VPS推荐、外贸建站主机、SSL证书推荐、WordPress主机推荐 |
| 公众号 | 老蒋朋友圈 |

适用场景与需求
- 站点图片和附件较多,服务器本地磁盘压力大
- 希望将媒体资源交给对象存储,降低主机带宽和 I/O 负载
- 希望配合 CDN/自定义域名提升图片访问速度
- 多台 Web 服务器部署时,需要统一媒体存储位置
- 需要更灵活地接入多云或 S3 兼容平台
功能介绍
- 媒体上传时自动同步原图到对象存储
- 自动重写媒体 URL,前台访问走对象存储或自定义域名
- 支持上传后异步处理缩略图,减少上传阻塞
- 支持可选“不在本地保存”模式,节省本地存储空间
- 支持后台一键测试对象存储连接
- 支持失败重试机制(缩略图异步任务自动重试)
- 提供后台错误日志查看、清空日志、手动按附件 ID 重试
- SecretKey 安全存储(加密保存,不在后台明文回显)
系统要求
- PHP: 8.1 或更高版本
- WordPress: 6.0 或更高版本
- 扩展依赖: OpenSSL(用于密钥加解密)
- 插件依赖: 安装包内需包含
aws-sdk/vendor/目录
安装方式
- 将插件目录放置到
wp-content/plugins/leosp/ - 确认依赖已完整打包(必须包含
aws-sdk/vendor/) - 在 WordPress 后台启用插件
- 进入
设置 -> LEOSP 对象存储完成参数配置
配置说明
在 设置 -> LEOSP 对象存储 中填写以下参数:
- 启动关闭静态分离: 是否启用对象存储接管媒体
- 不在本地保存: 开启后,文件在上传成功后按策略清理本地副本
- 空间名称 (Bucket): 对象存储桶名称
- 所属地域 (Region): 例如
ap-shanghai,R2 等可填auto - EndPoint: S3 兼容服务地址(可选,建议带
https://) - 自定义域名: 资源访问域名(可选,建议使用 CDN 域名)
- AccessKey / SecretKey: 对象存储凭证
- 对象路径前缀: 对象统一前缀(可选,如
wp-uploads)
使用流程
- 在后台完成对象存储配置并保存
- 点击“测试连接”确认连接正常
- 正常上传媒体文件
- 插件自动上传原图并改写 URL
- 缩略图在后台异步任务中上传(失败会自动重试)
- 可在“最近错误日志”中查看异常并手动触发重试
已实现技术点
- SDK 接入: 内置 AWS SDK(本地依赖,不走线上动态安装)
- S3 客户端:
\Aws\S3\S3Client统一封装(上传、删除、连通性测试) - WordPress Hooks:
wp_handle_upload/wp_handle_sideload(接管上传)wp_generate_attachment_metadata(元数据阶段调度异步任务)wp_get_attachment_url/wp_get_attachment_image_src(URL 重写)delete_attachment(删除附件时同步删远端对象)
- 异步任务:
wp_schedule_single_event+ 自定义事件处理缩略图上传 - 失败恢复: 异步失败自动重试(最大重试次数限制)
- 后台可观测: 错误日志持久化、后台展示、清空、手动重试
- 安全增强:
- SecretKey 加密存储(AES-GCM 方案)
- 后台不回显明文 SecretKey
- AJAX 接口使用 nonce + capability 校验
- 本地文件删除前进行 uploads 路径边界校验
- 国际化: 支持
Text Domain: leosp文案翻译机制
注意事项
- 首次启用建议先在测试环境验证上传、URL、删除链路
- 开启“不在本地保存”前,建议确认对象存储与 CDN 可稳定访问
- 若使用第三方对象存储,请确认其 S3 兼容策略与 endpoint 配置
- 历史媒体不会自动补传,如需迁移历史资源请配合批处理脚本
- 若站点定时任务(WP-Cron)被禁用,异步缩略图上传会受影响
故障排查
- 测试连接失败
- 检查 Bucket、Region、Endpoint、AK/SK 是否正确
- 检查对象存储权限策略(读写权限)
- 上传成功但图片打不开
- 检查自定义域名是否已绑定、HTTPS 证书是否有效
- 检查对象存储或 CDN 的访问策略
- 缩略图未同步
- 查看插件“最近错误日志”
- 使用日志区的“重试上传”或按附件 ID 手动重试
- 检查 WP-Cron 是否正常运行
版本与支持
- 当前版本:
1.0.0 - 建议在升级前备份数据库和站点文件
- 如需功能建议与反馈,请访问插件发布页面或开发者网站