很多时候,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'
至此数据域名修改域名完成。