批量查找和替换 WordPress 数据库——最简单的方法
在很多情况下,我们必须更改 WordPress 网站数据库中的 URL。例如,我们需要在将 WordPress 数据库从一个站点(例如,从http://acme.com
远程生产站点)迁移到http://acme.dev
我们计算机上的本地开发网站后执行此操作。
WordPress.org 拥有大量插件,例如WP DBManager和WP Migrate DB,还有许多第 3 方工具可让您轻松导入数据库。棘手的部分是必须更改数据库中的每个 URL 实例。
迁移数据库后,其中的 URL仍指向旧站点,在本例中为acme.com
. 您可能会在表中找到旧的 URL ,设置为和选项wp_options
的值,它也可能嵌入到数据库中的其他几个行和表中。这些旧的 URL 最终可能会阻止您的网站正常运行,因此您需要将它们更改为新的 URL,在我们的示例中为。siteurl
home
acme.dev
此时,随意访问我们的开发站点acme.dev
只会导致一个空白页面。
那么我们如何更改数据库中的所有这些 URL 呢?
运行 SQL 查询
通常,人们会运行以下 SQL 查询来替换表中的siteurl
和选项的值。home
wp_options
1个
2个
3个
|
UPDATE wp_options SET option_value = replace(option_value, 'http://acme.com' , 'http://acme.dev' ) WHERE option_name = 'home' OR option_name = 'siteurl' ; |
随后,他们使用另一个 SQL 查询来替换表中出现的所有 URL wp_posts
,即post_content
每一行的列中。
1个
2个
|
UPDATE wp_posts SET post_content = replace( post_content, 'http://acme.com' , 'http://acme.dev' ); |
运行这些查询是一个可行的解决方案,但同时执行起来并不方便。看到数据库可能由于查询中的一个简单疏忽而变得失控,甚至会让人伤脑筋。
利用 WP-CLI
我们可以做的另一条路线是利用 WP-CLI 命令行,我发现这是一种更方便的选择。这意味着您需要安装 WP-CLI。
假设您已经安装了 WP-CLI 并且可以wp
作为别名访问该命令,请导航到您的 WordPress 站点文件所在的目录。
然后,运行以下命令:
1个
|
wp search-replace 'http://acme.com' 'http: //acme .dev |
第一个参数'http://acme.com'
是要被第二个参数替换的旧条目'http://acme.dev'
。
命令行将搜索数据库中的所有表,而不仅仅是post_content
列和wp_options
表,并替换通过命令参数传递的条目的每个实例。
从上面的截图可以看出,一共做了225次替换。我们已经通过一个简单的命令行完成了它。
我认为值得一提的是,我们可以使用该wp search-replace
命令,不仅可以替换 URL,还可以替换存储在数据库中的任何值。我们也可以通过传递表名作为第四个参数来限制对某个表的操作,如下:
1个
|
wp search-replace '.jpg' '.webp' wp_posts |
运行上面的命令,它只会搜索wp_posts
存储我们内容(帖子、页面等)的表格,并将图像扩展名替换.jpg
为.webp
。
推荐阅读: 使用 WebP 图像格式的完整指南
WP-CLI 让错综复杂的 SQL 操作看起来更直观,你可以更方便地使用它。如果你想微调你的命令,请查看 WP-CLI 的文档,它为你提供了一个选项列表,可以使用命令执行更高级的操作wp search-replace
。