很多时候,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

#下载 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

使用以下命令检测配置是否正常

wp --info

如果出现以下错误,则需要解禁 PHP函数:proc_open

解禁PHP proc_open 函数即可解决

配置正常返回以下信息:

配置正常

二、修改站点域名

打开 WordPress 站点目录(此处以宝塔默认为例,如您进行了其他配置,请修改

#打开站点目录
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

返回以下信息:

[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.

确认需要修改的信息无误后,直接修改即可:

#此命令适用于 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、以及站点等相关信息。


《使用 WP-CLI 更换 WordPress 域名》