很多时候,WordPress 更换域名是一件及其麻烦的事情,一则需要手动去修改数据库,二则不确定是否会不会有漏掉修改的地方。(作为一个博客更换过十几个域名的小老铁深受其害)
WordPress官方推出了用于管理 WordPress 的命令行工具——WP-CLI,我们只需借助其中批量修改数据库的功能即可近乎完美的快速完成 WordPress 站点的域名修改。
WP-CLI配置要求
- 类 UNIX 环境(OS X、Linux、FreeBSD、Cygwin),Windows 环境中的支持有限
- PHP 5.6 或更高版本
- WordPress 3.7 或更高版本。比最新 WordPress 版本更早的版本可能会降低功能
修改域名
一、安装 WP-CLI
使用以下命令进行安装配置 WP-CLI
1 2 3 4 5
| #下载 WP-CLI curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar #配置全局变量 chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp
|

使用以下命令检测配置是否正常
如果出现以下错误,则需要解禁 PHP函数:proc_open
解禁PHP proc_open 函数即可解决
配置正常返回以下信息:
配置正常
二、修改站点域名
打开 WordPress 站点目录(此处以宝塔默认为例,如您进行了其他配置,请修改
1 2 3 4 5 6 7
| #打开站点目录 cd /www/wwwroot/wordpress #测试站点需要修改的地方,此命令不会直接运行,以下命令二选一即可。 #此命令适用于 root 用户 wp search-replace 'http(s)://olddomain' 'http(s)://newdomain' --dry-run --allow-root #此命令适用于非 root 用户 sodu -u wp search-replace 'http(s)://olddomain' 'http(s)://newdomain' --dry-run
|
返回以下信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| [root@localhost wordpress]# wp search-replace 'https://te1.roy.wang' 'https://te.roy.wang' --dry-run --allow-root +------------------+-----------------------+--------------+------+ | Table | Column | Replacements | Type | +------------------+-----------------------+--------------+------+ | wp_commentmeta | meta_key | 0 | SQL | | wp_commentmeta | meta_value | 0 | SQL | | wp_comments | comment_author | 0 | SQL | | wp_comments | comment_author_email | 0 | SQL | | wp_comments | comment_author_url | 0 | SQL | | wp_comments | comment_author_IP | 0 | SQL | | wp_comments | comment_content | 0 | SQL | | wp_comments | comment_approved | 0 | SQL | | wp_comments | comment_agent | 0 | SQL | | wp_comments | comment_type | 0 | SQL | | wp_links | link_url | 0 | SQL | | wp_links | link_name | 0 | SQL | | wp_links | link_image | 0 | SQL | | wp_links | link_target | 0 | SQL | | wp_links | link_description | 0 | SQL | | wp_links | link_visible | 0 | SQL | | wp_links | link_rel | 0 | SQL | | wp_links | link_notes | 0 | SQL | | wp_links | link_rss | 0 | SQL | | wp_options | option_name | 0 | SQL | | wp_options | option_value | 2 | PHP | | wp_options | autoload | 0 | SQL | | wp_postmeta | meta_key | 0 | SQL | | wp_postmeta | meta_value | 0 | SQL | | wp_posts | post_content | 2 | SQL | | wp_posts | post_title | 0 | SQL | | wp_posts | post_excerpt | 0 | SQL | | wp_posts | post_status | 0 | SQL | | wp_posts | comment_status | 0 | SQL | | wp_posts | ping_status | 0 | SQL | | wp_posts | post_password | 0 | SQL | | wp_posts | post_name | 0 | SQL | | wp_posts | to_ping | 0 | SQL | | wp_posts | pinged | 0 | SQL | | wp_posts | post_content_filtered | 0 | SQL | | wp_posts | guid | 3 | SQL | | wp_posts | post_type | 0 | SQL | | wp_posts | post_mime_type | 0 | SQL | | wp_term_taxonomy | taxonomy | 0 | SQL | | wp_term_taxonomy | description | 0 | SQL | | wp_termmeta | meta_key | 0 | SQL | | wp_termmeta | meta_value | 0 | SQL | | wp_terms | name | 0 | SQL | | wp_terms | slug | 0 | SQL | | wp_usermeta | meta_key | 0 | SQL | | wp_usermeta | meta_value | 0 | PHP | | wp_users | user_login | 0 | SQL | | wp_users | user_nicename | 0 | SQL | | wp_users | user_email | 0 | SQL | | wp_users | user_url | 1 | SQL | | wp_users | user_activation_key | 0 | SQL | | wp_users | display_name | 0 | SQL | +------------------+-----------------------+--------------+------+ Success: 8 replacements to be made.
|
确认需要修改的信息无误后,直接修改即可:
1 2 3 4
| #此命令适用于 root 用户 wp search-replace 'http(s)://olddomain' 'http(s)://newdomain' --allow-root #此命令适用于非 root 用户 sodu -u wp search-replace 'http(s)://olddomain' 'http(s)://newdomain'
|

至此数据域名修改域名完成。
这个通过 WP-CLI 修改域名还是十分方便的,但切莫忘记修改SSL、以及站点等相关信息。