Wordpress / 数据库 / 整活 · 28 6 月, 2024 0

WordPress批量替换文章图像链接

前言

迁移WordPress到新服务器后,发现文章的图片链接变成了内网地址,以至于用公网访问文章刷不出图片。由于含有图片的文章较多,手动一张张修改地址显然不现实。于是考虑批量修改所有文章中所含图像的URL。

怎么做

需要修改WP使用的数据库。这里以MySQL为例。在部署了WP用MySQL的服务器(如果是Docker容器部署,参考这篇文章[解决策 – Docker]章节进入容器操作)执行以下指令,以root身份登录数据库:

mysql -u root -p
# 会提示你输入密码

接下来的操作如下:

mysql> use wordpress  # 这里的“wordpress”是数据库名称,请根据实际情况修改
mysql> select * from wp_posts limit 5\G
# 以下示例地址“http://192.168.1.1:8000/”请根据实际情况修改
mysql> update wp_posts set post_content = replace(post_content, 'http://192.168.1.1:8000/', '/');
mysql> update wp_posts set post_content_filtered = replace(post_content_filtered, 'http://192.168.1.1:8000/', '/');
mysql> update wp_posts set guid = replace(guid, 'http://192.168.1.1:8000/', '/');
mysql> quit

然后检查文章中的图像能否正常显示。

一点说明

你可能注意到,上述SQL操作中将内网地址通过replace命令替换成了“/”,即使用相对路径。如果图片都保存在你的WP媒体库中,通过这种方式可以有效避免下次迁移再次发生图片链接坏掉的情况。