例如,在将WordPress数据库从一个站点(例如,从http://acme.com
远程生产站点)迁移到我们计算机上的http://acme.dev
本地开发网站后,我们需要执行此操作。
在某些情况下,我们必须更改WordPress网站数据库中的URL 。
棘手的部分是必须更改数据库中的每个URL实例 。
WordPress.org托管了许多插件,例如WP DBManager和WP Migrate DB ,并且还有许多第三方工具可让您轻松导入数据库 。
这些旧的URL最终可能会阻止您的网站正常运行,因此您需要将它们更改为新的URL (在我们的示例中为acme.dev
。
您可能会在wp_options
表中找到旧的URL,并将wp_options
设置为siteurl
和home
选项的值,并且该siteurl
可能还嵌入数据库的其他几行和表中。
迁移数据库后,其中的URL 仍指向旧站点 ,在本例中为acme.com
。
此时,访问我们的开发站点acme.dev
只会导致空白页 。
那么,我们如何更改数据库中的所有这些URL?
通常,人们会运行以下SQL查询,该查询将替换wp_options
表中的siteurl
和home
选项的值。
UPDATE wp_options SET option_value =
replace(option_value, 'http://acme.com', 'http://acme.dev')
WHERE option_name = 'home' OR option_name = 'siteurl';
随后,他们使用另一个SQL查询来替换wp_posts
表中(即每一行的post_content
列中)所有URL出现。
UPDATE wp_posts SET post_content =
replace( post_content, 'http://acme.com', 'http://acme.dev' );
甚至可能由于查看查询中的简单监督而看到数据库可能如何陷入困境,这真令人不安。
运行这些查询是一个可行的解决方案,但同时却不方便。
这意味着您将需要安装WP-CLI 。
我们可以做的另一种方法(我发现是更方便的选择)是利用WP-CLI命令行 。
假设您已安装WP-CLI并可以使用wp
命令作为别名,请导航到WordPress站点文件所在的目录。
然后,运行以下命令:
wp search-replace 'http://acme.com' 'http://acme.dev
第一个参数, 'http://acme.com'
,是与第二个,被替换的旧条目'http://acme.dev'
。
命令行将搜索数据库中的所有表 ,不仅搜索post_content
列和wp_options
表, wp_options
替换通过命令参数传递的条目的每个实例 。
我们已经通过一条简单的命令完成了它。
从上面的屏幕截图中可以看到,总共进行了225次替换。
我们还可以通过将表名作为第四个参数传递,从而将操作限制在某个表中,如下所示:
我认为值得一提的是,我们可以使用wp search-replace
命令,不仅可以替换URL,还可以使用它存储在数据库中的任何值 。
wp search-replace '.jpg' '.webp' wp_posts
运行上面的命令,它将仅搜索wp_posts
(存储我们的内容(帖子,页面等)的表),并将图像扩展名从.jpg
替换为.webp
。
如果您想微调命令,请查看WP-CLI的文档,该文档为您提供了一系列选项 ,可以使用wp search-replace
命令执行更高级的操作。
WP-CLI使缠结的SQL操作看起来更加直观,您可以以更方便的方式使用它。
翻译自: https://www.hongkiat.com/blog/mass-find-replace-database-wp/