📚 相关阅读

← 返回首页

WP-CLI自动更新配置完整指南

WordPressWP-CLI自动更新维运建站

WordPress更新是很多站长的痛——每次版本更新都要登录后台、点按钮、等待,可能还遇到插件不兼容的问题。更麻烦的是,安全补丁往往需要第一时间打,但又容易被遗忘。

我用了18个月完全自动化这个流程,核心工具是WP-CLI + cron。以下是我实际在用的配置。

方案一:纯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  # 验证安装

更新WordPress核心:

wp core update           # 更新到最新稳定版
wp core update-db        # 执行数据库迁移(如有)

更新所有插件:

wp plugin update --all

更新所有主题:

wp theme update --all

这些命令我全部用cron自动化,从2024年10月至今没有手动点过一次更新按钮。

方案二:自动更新脚本(生产环境推荐)

纯命令行的缺点是更新失败时没有通知。我在服务器上写了一个脚本,整合了更新+通知+日志:

#!/bin/bash
# /opt/wp-auto-update.sh

LOGFILE="/var/log/wp-auto-update.log"
WEBROOT="/var/www/techpps.net"

echo "[$(date)] 开始WordPress更新" >> $LOGFILE

cd $WEBROOT

# 更新核心
wp core update >> $LOGFILE 2>&1
if [ $? -eq 0 ]; then
    echo "[$(date)] WordPress核心更新成功" >> $LOGFILE
else
    echo "[$(date)] WordPress核心更新失败" >> $LOGFILE
fi

# 更新数据库
wp core update-db >> $LOGFILE 2>&1

# 更新插件(排除可能有问题的插件)
wp plugin update --all --exclude=akismet,hello-dolly >> $LOGFILE 2>&1

# 更新主题
wp theme update --all >> $LOGFILE 2>&1

echo "[$(date)] 更新完成" >> $LOGFILE

给脚本加执行权限:

chmod +x /opt/wp-auto-update.sh

方案三:定时任务配置(核心部分)

用cron让更新自动化执行。我配置了三个不同频率的更新策略:

每日自动更新(推荐配置)

# 每天凌晨3点执行
0 3 * * * /opt/wp-auto-update.sh >> /var/log/wp-cron.log 2>&1

WordPress自动更新(Minor版本)

WordPress从5.6开始支持minor版本的自动更新,默认是关闭的。在wp-config.php中启用:

// 启用Minor版本自动更新(如 6.8.x → 6.8.1)
define( 'WP_AUTO_UPDATE_CORE', 'minor' );

这个配置让WordPress minor安全补丁自动打,major版本(如6.8→6.9)仍然需要手动处理。

插件/主题安全更新自动批准

有些插件的安全更新非常紧急,不想因为管理员没看到而延误。在wp-config.php中加入:

// 自动批准插件安全更新邮件通知(但不自动更新)
define( 'AUTOMATIC_UPDATER_DISABLED', false );

常见问题处理

问题1:更新失败,提示"另一更新正在进行"

WordPress数据库锁住了。解决方法:

wp option delete core_updater.lock

然后重新执行更新。

问题2:插件更新后网站崩溃

更新前先用dry-run测试:

wp plugin update akismet --dry-run

发现问题插件后,在更新命令中排除:

wp plugin update --all --exclude=akismet,another-problematic-plugin

问题3:更新后数据库需要升级

每次WordPress major版本升级后,必须运行数据库迁移:

wp core update-db

如果使用的是多站点模式:

wp core update-db --network

问题4:更新占用太多带宽

多个WordPress站点的更新可以串行执行,减少带宽占用。脚本中加入:

# 每个站点间隔5分钟
0 3 * * * sleep 300 && /opt/wp-auto-update-site1.sh
5 3 * * * /opt/wp-auto-update-site2.sh

更新后验证清单

更新完成后我会检查三件事:

1. 访问网站首页,确认加载正常

2. 检查WordPress后台→工具→站点健康,看是否有错误

3. 查看wp-content/debug.log(如果开启了debug模式)

一个验证脚本:

#!/bin/bash
curl -s -o /dev/null -w "%{http_code}" https://techpps.net/ | grep -q "200"
if [ $? -eq 0 ]; then
    echo "[$(date)] 站点正常" | mail -s "WP更新验证" admin@techpps.net
else
    echo "[$(date)] 站点异常" | mail -s "WP更新异常警告" admin@techpps.net
fi

什么情况下不适合全自动更新

全自动更新不适合以下场景:

这类网站建议改为:开启Minor自动更新,Major版本通过CI/CD流程在测试环境验证后再手动部署。

总结

我的实际配置:

如果你的WordPress站点还在手动更新,从今天开始用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 plugin list 看看你的站点插件列表。

👉 体验更高效的建站方式:MiniMax平台 | WordPress建站系列之前言与规划

🔗 Related Tech Articles

Deep dive into related technical topics:

WP-CLI自动更新配置完整指南
技术标签: wp-cli, 自动更新
WP-CLI自动更新配置完整指南
技术标签: wp-cli, 自动更新
WordPress 2026定期维护完整清单:WP-CLI自动化实战
技术标签: 维护, wp-cli
🌐 WordPress Hosting
查看推荐 →