我正在Mac上开发,拥有一个类似以下的域:
http://localhost/~user/foobar
My(temp)live environment位于我的域中,域最终为:
http://example.com/foobar
, 或http://localhost/foobar
这只是暂时的,因为我的客户最终会购买一个域名http://foobardomain.com
我必须把所有的东西都迁移到那里。
我正在使用database sync 同步我的数据库,到目前为止(我想直到现在)运行得很好。
我已经做了很多工作,开始通过wordpress UI上传图像,结果发现完整路径保存在wp_posts
桌子这显然是一个问题,因为域非常不同,图像不会加载到实时或开发站点上。我可以运行如下查询:
UPDATE wp_posts set post_content=REPLACE(post_content, \'http://localhost/~user/foobar\', \'http://example.com/foobar\')
我的问题是:
是wp_posts.wp_content
专栏是我唯一需要担心的专栏
最合适的回答,由SO网友:markratledge 整理而成
您还需要更改主题选项中的URL,其中包括设置标题图像URL的选项、小部件数据中的URL以及插件选项中的URL。其中一些URL是相对的,但许多URL是绝对的。
最好的方法是使用一个工具,在整个数据库中查找/替换URL,并正确地反序列化/重新序列化php数据,例如WordPress Serialized PHP Search Replace Tool.
有些主题无法正确序列化数据,因此有时在使用上述工具时,主题将丢失所有选项和小部件数据。但这与主题不符。我在WordPress目录中遇到的所有主题,以及来自StudioPress等知名公司的主题,都能正确处理序列化的php数据,并且主题数据没有任何问题。
一些插件(如备份和安全插件)在激活时读取完整的服务器路径,例如/server1/home/username/public_html/wp-content/plugins/aplugin/
- 这些插件需要在新主机上手动重置。但通常,这些插件在网站上线之前都不会激活。
看见WordPress Serialized PHP Search Replace Tool
有关完整参考,请参阅Moving WordPress « WordPress Codex.
如果您确实想使用您在问题中提到的MySQL查询,除了您已经使用的查询之外,还需要更改GUID和Posteta:
UPDATE wp_posts SET guid = replace(guid, \'http://www.olddomain.com/\',\'http://www.newdomain.com/\');
UPDATE wp_postmeta SET meta_value = replace(meta_value, \'http://www.olddomain.com/\', \'http://www.newdomain.com/\');