
WordPress 是使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站,也可以把 WordPress 当作一个内容管理系统(CMS)来使用。
WordPress 功能强大、扩展性强,这主要得益于其插件众多,易于扩充功能,基本上一个完整网站该有的功能,通过其第三方插件都能实现所有功能。
简介
这篇文章我们来介绍一下通过使用插件实现远程附件功能,将 WordPress 的媒体库附件存储在腾讯云COS上
腾讯云 COS 具有高扩展性、低成本、可靠和安全等特点,将媒体库附件保存在 COS 上有以下好处:
- 附件将拥有更高的可靠性;
- 用户查看图片附件时将直连 COS 服务器,不占用您服务器的下行带宽/流量,用户访问速度更快;
- 可配合腾讯云 CDN 进一步提升用户查看图片附件的速度,优化网站访问速度。
准备工作
1. 搭建 WordPress 博客平台
- 可以在 WordPress 官方页面 下载 WordPress 的最新版并查看安装指南
- 或者在安装服务器系统时在镜像市场中选择预装 WordPress博客平台 的 CVM 镜像
2. 创建一个公有读私有写的存储桶,存储桶的地域建议与运行 WordPress 博客平台的 CVM 的地域相同,创建详情请参见 创建存储桶 文档
3. 在存储桶列表中找到刚刚创建的存储桶,并单击配置管理
4. 单击左侧的基础配置
,查看访问域名并记录
5. 访问 WordPress 后台,访问插件-安装插件页面 /wp-admin/plugin-install.php
,安装插件
- 从 Github 或 WordPress Plugins 下载最新 releases 源码,通过 WordPress 后台上传安装,或者直接将源码上传到 WordPress 插件目录
wp-content/plugins
,然后在后台启用 - 后台搜索
Sync QCloud COS
进行安装(推荐使用)
配置Sync Qcloud COS插件
1. 在 WordPress 后台管理左侧导航栏设置
下腾讯云COS设置
,点击进入设置页面,配置说明见下表
配置项 | 配置值 |
---|---|
存储桶名称 | 创建存储桶时自定义的名称 |
存储桶地域 | 创建存储桶时所选择的地域 |
APP ID | 开发商 APPID,创建存储桶时名称后的ID |
SecretID | 前往「云 API 密钥」进行获取 |
SecretKey | 前往「云 API 密钥」进行获取 |
不上传缩略图 | 勾选后不会上传对应的缩略图文件,建议不勾选 |
不在本地保留备份 | 勾选后不会在本地保留原文件,建议不勾选 |
本地文件夹 | 本地保存路径,例wp-content/uploads |
不在本地保留备份 | 勾选后不会在本地保留原文件,建议不勾选 |
URL前缀 | COS访问域名/本地文件夹,例https://media-10000000.cos.ap-shanghai.myqcloud.com/wp-content/uploads |
2. 填写完成后点击保存更新即可
3. 测试上传一个新文件,查看附件详情,查看附件图片的 URL,确认附件图片的 URL 指向腾讯云 COS
如果以上是成功的,那么就需要同步旧资源到COS存储桶当中,可以使用COSCMD或者COS Migration,否则后台无法正常预览旧资源;同步完成以后,可以开启回源设置,参考下文的设置回源。
扩展
1. 使用 CDN 加速访问
存储桶如果需要配置 CDN 加速,可参见 CDN 加速配置 文档
在插件设置中将URL前缀修改为默认 CDN 加速域名或自定义加速域名即可
2. 替换数据库中的资源地址
如果不是新创建的站点,数据库当中必定是旧的资源链接地址,我们需要替换一下,插件提供了替换功能,在首次替换前记得备份
旧域名填写原资源域名,如https://qq52o.me/
新域名填写现在的资源域名,如https://img.qq52o.me/
3. 设置跨域访问
在文章中引用对应的资源链接,控制台会提示跨域的错误 No 'Access-Control-Allow-Origin' header is present on the requested resource
. 原因是没有添加 header
需要你的 COS 源的 CDN 中添加 HTTP Header 配置
Access-Control-Allow-Origin:*
或者只允许你自己的域名
Access-Control-Allow-Origin:https://qq52o.me
在存储桶的基础设置中设置 跨域访问CORS
,详细请查看对应文档 设置跨域访问
4. 设置回源
如果不在WordPress后台媒体库处上传资源,建议开启回源设置,详细请查看对应文档设置回源
开启之后,客户端首次访问COS源文件时,COS 发现无法命中对象时,对客户端返回 302 HTTP 状态码并跳转至回源地址对应的地址,此时对象由源站提供给客户端,保证访问。同时 COS 从源站复制该文件并保存至存储桶对应的目录中;第二次访问时 COS 直接命中对象并返回给客户端。
因为WordPress设计问题,在后台媒体库上传资源会占用文章ID,所以我一般是不在后台上传的
写在最后
项目地址:Github 支持请点Star
请问按照教程大部分都显示了,个别图片和视频加载都报错,看地址已经是COS的地址了~

@sunday 你这个播放器还是什么,不支持这个地址的资源链接。直接访问cos的地址能正常访问就没有问题
用了这个插件 有时候临时要用wp附件的编辑功能(裁切)有没有什么办法能编辑到cos里的图片呢
@卡卡 目前没有解决方案,后面再看看吧
@沈唁 好的 打通 体验很爽 😎
win2012服务器 ,本地保存路径,例 wp-content/uploads,这里会显示d盘:www然后是 wp-content/uploads,这种怎么处理呢
@骑猪追飞机 加群帮你看看。没有windows环境。
大佬,按照你的教程设置保存后,会提示“此站点正遇到技术问题,请查看您的站点管理员电子邮件收件箱来获得指引”,这个怎么处理?
大神好,我图片不是很多,大小也不大。设置了cdn加速域名。开始同步后就会卡死,开始没注意,网站上的大部分图片都不见了,显示为白色或者显示“暂时无法打开图片”。然后,我继续刷新后台,点击开始同步,慢慢地搞了几次卡死几次,图片回来了一半吧,但是后面一般就比较困难了,有点担心能不能显示回来
@喵了个咪 fpm同步卡死是正常的,浏览器一直在转圈。你可以把图片手动上传到cos,或者使用cos的命令行工具上传上去以后再替换。
图片是不会丢失的,放心即可。
您好大大,我按照您的教程设置完点保存会弹出这个
“Error thrown Call to undefined function GuzzleHttp\_idn_uri_convert()”
请问这是什么原因,怎么解决呢?恭候您的回复
@代豪 需要看你装的插件,其他插件可能也用了guzzle这个库,他版本太低,而且先加载了
@沈唁 谢谢您的回复,我删掉了一个图廊插件后,就不再出现这个错误页面了,变成了这个
😳 😳
@沈唁 致命错误未定义错误
@代豪 图丢了,报错信息也不全。。
@沈唁
@沈唁 麻烦您给我看一下
@代豪 加下QQ交流群:887595381
Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: self signed certificate in certificate chain (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in……汉字
@STBLOG 什么时候的?
@沈唁 就今天,给你留言的时候的。
@STBLOG 执行什么操作了
@沈唁 就是正常的操作……插件下载下来之后,第一次配置有用。然后我想修改媒体上传路径,就把插件禁用了。改完媒体路径之后,再次启用,填完信息之后就报错了。删了重新下载插件也没用。
@STBLOG 从curl官方网站http://curl.haxx.se/ca/cacert.pem,下载根证书:cacert.pem ,然后修改php.ini中加入该证书,并重启fpm服务。
在php.ini中加入
@STBLOG 这报错你百度就能解决,和你本地php环境有关
站长您好,我目前遇到一个问题,配置方面都按步骤来了。上传都正常,也是无法显示图片。
打开图片就是这样的提示,这是什么原因?
@Jon 没权限读取?存储桶权限是不是公读私写?
@沈唁 OK啦,一开始设置成私读私写了,改成公读就好啦。谢谢。 😀
博主你好!我配置完成后,在wordpress后台上传图片,可以在存储桶里找到。但是图片在wordpress的媒体库里是碎的,发布到文章里也是碎的,不知道问题出在哪里。
前缀是用的存储桶的访问域名,本地文件夹是wp-content/uploads。如能帮助,非常感谢!
@kacheche 前缀填写cos的访问域名和本地文件夹,比如:xxx-11111.shanghai.myqcloud.com/wp-content/uploads
@沈唁 给您邮箱回复配置图片了,麻烦您有空帮忙看看,谢谢!
@kacheche 感谢打赏,已加入赞助名单。
你好,行政官
在文字版Admin页面激活此插件后,我不能上传图片。
@dom 报错信息有吗?上传图片是500了?你配置发我看下
@沈唁 当我上传照片时,有这个通知。
但我的照片很小,像下面一样 : sad:
@沈唁 我怎样才能分享这幅画呢?
请告诉我你的电子邮件地址,好吗?
@dom 直接回复邮件就可以了
@沈唁 请发电子邮件。
我的电邮地址是”sd*****co.kr”。
@dom 给你发了一个邮件,直接回复那条就行了
上传完图片不显示了
@较瘦 – -提供有效信息啊,配置之类的发我邮件。可能是你url前缀填写有问题。
搞完之后为什么图片不显示了,上传新的图片也不显示
@dla 配置填写是否正确?访问对应cos的域名提示什么?
@沈唁
就是图片不显示,URL前缀我直接填的cos里的访问域名
@dla 配置有问题,截图发我邮箱吧
这个同步历史附件..好像不太管用啊 😥 明明历史附件就2个 但是没反应
@lena 先测试上传能否上传。
您的站点遇到了致命错误,请查看您的站点的管理电子邮箱来获得指引。
了解更多在WordPress中调试的信息。
填写完保存的时候提示这个
@马小胖 和其他插件可能不兼容,你安装了哪些插件?发我邮箱看看。
@马小胖 更新下插件到1.6.4版本试试,发现一个问题,可能是这里引起的。
“存储桶名称错误,可能是 XXX…”错误,可能的子用户密钥支持无效反馈。
详见GitHub issues:https://github.com/sy-records/wordpress-qcloud-cos/issues/6。
邮件回复可协助测试,或补充信息。开源不易,表示支持。
@leander 支持子账户的,你appid需要填写主账户的,而不是子账户。
Fatal error: Uncaught Qcloud\Cos\Exception\ServiceResponseException: Cos Error Code: AccessDenied, Status Code: 403, Cos Request ID: ***********=, 汉语
@爱你呦 没权限,你key什么的填对了吗?
@沈唁 1.5.1正常使用
@沈唁 只要换1.6就报错
@爱你呦 好吧。。。等我回家了试下,什么wp版本?加我好友吧,85464277,发下你的配置给我
@沈唁 5.3.2加你了
大佬发生了一个致命错误,1.5.1使用正常的
大佬真厉害!
@橘子书 为什么你头像又变了
666 ,前排围观