把本地 WordPress 网站迁移到正式服务器的时候,往往需要修改数据库,这样很麻烦,其实是有办法直接迁移网站而不用修改数据库的。在本站的 WordPress绑定多个域名的方法-通过WP_HOME 和 WP_SITEURL 常量文章中,我介绍了 WordPress 绑定多个域名的方法。
在把网站从本地迁移到服务器的过程中,这个方法非常实用,但是还有一个比较棘手的问题就是 WordPress 文章中的图片资源链接还是本地链接。WordPress 在插入附件的时候直接把附件的URL写死到数据库里了,所以,我们需要修改一下数据库里的附件链接地址,问题才能解决,好不麻烦!
如果上传图片的时候,不保存网站域名,而是直接保存一个相对于网站域名的相对链接地址,问题就迎刃而解了。
上传图片时把绝对地址修改成相对地址
下面一段代码是在 WordPress 官方论坛里面翻到的,这段代码会修改 WordPress 中上传的绝对路径为相对地址,这样就解决了写死域名在数据库中的问题。
function relativePathForUploads($fileInfos) {
global $blog_id;
$path = get_blog_option($blog_id,'siteurl');
$fileInfos['url'] = str_replace($path,'',$fileInfos['url']);
return $fileInfos;
}
add_filter('wp_handle_upload', 'relativePathForUploads');
不过上面的方法只对新上传的图片有效,添加这段代码之前的图片链接地址还是绝对网址。
对于以前上传的图片的解决办法
有两种解决办法可以修正之前上传的图片的链接地址,因为方法很简单,具体使用就不再展开讨论了,有不明白的可以在留言中提问。
- 使用 Relative URL 插件修改所有链接为相对链接
使用七牛云存储插件通过云存储访问以前的图片地址