问题描述

每当我创建一个新网站时,我首先在像”stage.domain-name.com” 这样的子域上创建一个分段站点。

一切正常后,我导出数据库,以 notepad ++打开它,并为”subdomain.domain-name.com” 做一个查找/替换,并将其替换为”domain-name.com” … 最后我将其导入活动站点的新数据库。

我的问题是… 我需要运行什么 SQL 查询,如果我只是想使用 phpmyadmin 在整个数据库上做这个简单的 find /replace?

-CH

最佳解决方案

保存 URL 的表格是 wp_options 。您应该对使用您网站的网址的列进行更新:

UPDATE TABLE wp_options SET option_value = "new domain" WHERE option_name = "siteurl"
UPDATE TABLE wp_options SET option_value = "new domain" WHERE option_name = "home"

我可能会缺少一些价值,但是当您再次查找/替换过程时,您可以注意到应该更新的值和表,并将其添加到此脚本中。

WordPress Codex 有一个很好的指南,如何更改网站的 URL,也许这对你来说更为方便:Changing the Site URL

次佳解决方案

最好做选项,帖子,帖子内容和帖子元:

UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');

UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');

UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

另请参阅 Searching Data using phpMyAdmin and MySQL | Packt Publishing.Search RegEx 是一个很好的 WP 插件,能够通过所有的帖子和页面搜索和替换 Grep 。

更新 6/16/2015:使用下一句中链接的工具好多了,因为在数据库转储中的上述简单查找/替换将会破坏序列化数据。请参阅 interconnectit.com WordPress Serialized PHP Search Replace Tool. 这样,您不会打破序列化数据,并且不需要在发布内容上运行 RegEx,因为互连脚本会随处改变 URL 。我始终使用该工具将站点迁移到不同的域,或者简单地从 http 到 https 进行全局更改,以强制 SSL 无需插件,并更改内容中的所有 URL,以防止不安全的元素错误。

第三种解决方案

这是一个伟大的 drop-in 脚本,我使用它,它与 WP 使用的存储选项的序列化数组非常出色。完成后请务必将其从远程服务器中删除,因为它具有巨大的安全风险。

https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

第四种方案

你不必这样做,你可以使用相对路径。

当你链接的东西,而不是 subdomain.soemthing.com/image.jpg – 使用/image.jpg 例如

像这样,你不会首先面对这个问题。

否则可以使用一个 mysql update 语句

update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, 『find this string』, 『replace found string with this string』);

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。