用WordPress的cli命令替换数据库

点此安装wp cli命令

WP-CLIwp search-replace 命令来做数据库替换,非常适合这种从 www.dian.com 切换到 wp.g9home.com 的场景。

wp cli 命令执行方式

方式 1:进入对应站点目录再执行

假设你有多个站点:

/var/www/site1
/var/www/site2
/var/www/site3

那么要替换 site2 的数据库:

cd /var/www/site2
wp search-replace 'http://www.dian.com' 'https://wp.g9home.com' --all-tables --skip-columns=guid --precise

方式 2:用 --path 参数指定路径

不切换目录,直接指定 WordPress 路径:

wp search-replace 'http://www.dian.com' 'https://wp.g9home.com' \
  --path=/var/www/site2 \
  --all-tables --skip-columns=guid --precise

方式 3:明确数据库参数(不常用)

如果你就是想在任意目录执行,也可以直接传 DB 参数:

wp search-replace 'http://www.dian.com' 'https://wp.g9home.com' \
  --dbuser=root --dbpass=123456 --dbname=site2_db \
  --all-tables --skip-columns=guid --precise

⚠️ 这种方式会跳过 wp-config.php,适合多站点混合时手动指定。


🔹 基本命令

wp search-replace 'http://www.dian.com' 'https://wp.g9home.com' --all-tables

🔹 常用参数说明

  • --all-tables
    默认只会替换 WordPress core 表(以 wp_ 开头),加上这个参数会替换数据库里所有表(包含插件自建表)。
  • --precise
    强制逐行替换,比较慢但更准确。
  • --dry-run
    预演模式,不会真正修改数据库,只显示会替换多少条数据。
  • --skip-columns=guid
    避免替换 wp_posts.guid 字段(官方建议,不然可能影响 feed)。

🔹 实际操作步骤

先 dry-run 看一下效果

wp search-replace 'http://www.dian.com' 'https://wp.g9home.com' --all-tables --dry-run

输出类似:

+-----------------------+-----------------------+--------------+------+
| Table                 | Column                | Replacements | Type |
+-----------------------+-----------------------+--------------+------+
| wp_options            | option_value          | 2            | SQL  |
| wp_posts              | post_content          | 15           | PHP  |
| wp_postmeta           | meta_value            | 3            | PHP  |
+-----------------------+-----------------------+--------------+------+
Success: 20 replacements to be made.

确认没问题后,正式替换

wp search-replace 'http://www.dian.com' 'https://wp.g9home.com' --all-tables --skip-columns=guid --precise

清理缓存
如果你有缓存插件或对象缓存(Redis/Memcached),执行:

wp cache flush

🔹 注意事项

  • 确保你先备份数据库(wp db export)。
  • 如果原来用的是 https://www.dian.com,要保持协议一致,不然会漏替换。
  • 替换后要重新登录后台,因为 cookies 域名变了。
Scroll to Top