分类
wordpress

[WPImage2WeiBo] WordPress 微博图床插件

几个月前将博客升级成 HTTPS 了, 导致七牛图床全部失效啦,七牛提供的二级域名不支持 HTTPS, 只能绑定备案的自定义域名,然而并没有已备案域名,只能抛弃七牛啦。搜了一下,发现微博是支持 https 的,于是打算使用微博的图床。

下载安装:https://github.com/YouthLin/WPImage2WeiBo

思路

为了防止以后微博突然禁用外链,文章里的链接在数据库中还是保存为原始的路径。即 http://your-domain.com/wp-content/uploads/2017/01/01/xxx.jpg 这样的形式。
而在输出文章时,替换每个图片链接为微博外链。这样只要原始图片文件一直存在,就算微博禁用了外链,我们把插件一关,也还可以使用原始图片。
所以插件要做的事就是,把原始图片上传到微博中,并维护一个原图链接到微博外链的对应关系。在输出文章时,用外链替换就行了。

下载七牛图片

由于之前图片都在七牛,所以想把文件都自己保管一份。
如果你之前没有迁移过博客,只是使用七牛插件,把本地文件上传到七牛的话,那么你的空间应该是保留有原始文件的,可以跳过这一步。
如果要下载七牛云里所有文件,参见上一篇文章:下载七牛云空间所有文件

微博图床插件

效果:输出文章时,会自动检测图片链接,若是新增的图片链接,那么会上传到微博中,使用微博外链替换原图链接输出。原图链接与外链的对应关系保存在数据库中。
实现:网上已有 PHP 上传图片到微博的代码,不过是需要 cookie 的,Cookie 如何获得并保持有效,这里用的方案是保存用户名与密码进行自动登录。
所以其实整个插件就三部分,一是 WordPress 插件的写法,hook 拦截文章输出等;二是微博自动登录更新 cookie; 三是上传图片。

WordPress 插件开发

这个网上资料很多,搜几篇看一下就可以开始了,然后要实现什么功能再继续搜索。
比如通用的做法是插件头信息,监听插件启用、停用、卸载。然后要对文章输出进行处理,那么需要了解要用到哪个过滤器。另外在后台需要配置用户名密码,涉及到插件如何在设置里添加子页面。

先来看一下文件组织:

.
├── WPImage2WeiBo.php                            主文件,引入其他文件
├── exception
│   └── WeiBoException.php                       自定义异常类
├── index.php                                    nothing
├── languages                                    i18n 语言包
│   ├── wp-image-to-weibo-zh_CN.mo
│   └── wp-image-to-weibo-zh_CN.po
├── readme.txt                                   插件描述
├── service
│   └── WeiBoUploader.php                        上传图片到微博的类
├── task
│   ├── lifecycle.php                            插件启用初始化表
│   └── processor.php                            过滤文章内容
└── view
    └── settings.php                             后台设置页面

由于之前没有用 PHP 写过任何实际项目,所以文件夹我都是按写 Java 的习惯瞎分类的,不过反正能正常运行哈哈哈。
具体的代码就不写了,都是抄的已有实现。


利用微博当图床 – php 语言实现
获取微博登录 Cookies 的几种方案

如果不是 WordPress 要用微博图床的话,可以使用 Chrome 插件 GitHub 可以搜到几个:
https://github.com/fate-lovely/pic-on-weibo
https://github.com/suxiaogang/WeiboPicBed前两天逛博客又发现一个:
https://inn-studio.com/vbed/


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

[/鼓掌] [/难过] [/调皮] [/白眼] [/疑问] [/流泪] [/流汗] [/撇嘴] [/抠鼻] [/惊讶] [/微笑] [/得意] [/大兵] [/坏笑] [/呲牙] [/吓到] [/可爱] [/发怒] [/发呆] [/偷笑] [/亲亲]