Wordpress导入hexo ——图片处理

本文解决了wordpress迁移hexo过程中的图片处理问题。

目前网上随便就能搜到很多wordpress迁移至hexo的教程,但极少数提到了图片怎么处理的问题。很多搬家的用户会遇到不知道如何将大量的图片搬运到hexo的问题。
搜索结果

思路

graph TD
A[处理源站文字] -->|通过hexo-migrator-wordpress解决| B(处理图片)
B --> C{打包源站图片}
C --> D[本地存放]
C --> E[云空间存放]
D --> F[替换图片链接]
E --> F[替换图片链接]
F --> G[问题解决]

处理文字

网络上已有大量类似文章,请自行搜索

打包源站图片

其实就是将整个uploads文件夹(位于wp-contents下)在不改动内容的情况下全部下载到我们的本地。例如,原来的wordpress站可直接访问的图片https://域名/wp-contents/uploads/2019/06/图片1.jpeg下载完成后路径应该是C:/存放用的文件夹名/uploads/2019/06/图片1.jpeg

  • VPS最简单,直接通过SFTP或FTP等方式将文件夹传输下来即可。
  • 如果是免费wordpress空间或购买的wordpress主机,可以看看能否进入目录进行管理。最终目的是格式内容不变。
  • cPanel、DirectAdmin和宝塔一类面板至少会提供在线压缩功能。在无法直接下载时可先将文件夹在服务器上压缩为单个压缩文件再下载。

选择存放地

当然可以放在本地hexo文件夹的source文件夹内,不过一般wordpress站所使用的图片库体积都是非同寻常地大,因此(如部署在github、giteePages等地)可能需要上传进OSS一类的云空间进行存放。上传时注意将文件夹原样上传,并且需要记下文件访问的URL前缀。

(URL前缀解释:https://某云空间域名/存储路径/uploads/2019/06/图片1.jpeg中的https://某云空间域名/存储路径/部分。)

替换图片链接

重点来了!
很多人最难解决的问题莫过于如何一次性将大量文章里图片的链接从源站地址改为新地址。笔者之前在网上发现了可批量将md文档内容替换的程序源码,在此详细解释使用方法。

安装python3

由于这是一段python3代码,需要安装python3环境。已有则无需。只需遵照python官网的说明安装最新版本的python3即可。

运行程序

仅仅有环境和源码是没有用处的,因为这段代码并不是专为修改图片链接而写的。请遵照下列步骤:

新建py文件

打开python3默认的IDLE编辑器,并新建一个py文件。
新建文件
保存py文件

粘贴代码

请将文件中的代码复制粘贴到编辑器内并保存。

修改代码

首先,如果python并没有安装在/usr/bin/env 内,将第一行删除。

其次,将27行data = re.sub('^[TOC] #.*? ', '', data)修改为需要替换内容。

  • 对于在本地存放的,可用data = re.sub('https://域名/wp-content/uploads', '/相对存放路径/uploads', data)替换。
  • 对于使用云空间的请替换成data = re.sub('https://域名/wp-content/uploads', 'https://某云空间域名.net/存储路径/uploads', data)

最后,将第44行top = r'/Users/mac/Desktop/'修改为文章存放路径,如改为top = r'C:\HEXO路径\source\_posts'

运行代码

修改完后务必保存。保存后通过F5运行。不出意外将会看到控制台输出的更改动态。等程序运行完毕后所有文章就应该都改好了。

问题解决

现在可以依照其他各类教程将hexo发布了。图片问题得到解决。

(可选)删除wordpress生成的无用图片

无用图片
如图所示,由于wordpress会自动生成中小图(而这对HEXO几乎完全没用),所以可以将这些带有如”150x150”后缀的图片删除。网上可以搜索到批量删除教程。