先给结论:安全类更新在 72 小时内安排,常规插件更新一个月一批,大版本更新单独排期、不要和其他更新混在一起。更新前必须做完的只有一件事——确认你能回到更新前的状态,具体是「有备份 + 验证过备份能恢复 + 记下了旧版本号」。出问题时的回滚顺序是:先停自动更新,再按「插件 → 主题 → 整站」逐层退,动过数据库结构的不要只回滚代码。
更新类型 | 建议节奏 | 说明 |
|---|---|---|
安全补丁(changelog 里写 security fix) | 72 小时内,先在测试环境过一遍 | 拖着的风险通常比更新的风险大 |
常规插件小版本 | 一个月一批,集中做 | 一次一个,方便定位 |
插件大版本 | 单独排期,和其他更新隔开 | 大版本常带数据库变更或界面重构 |
主题大版本 | 单独排期,最好先看演示 | 影响面覆盖全站前台 |
核心小版本 | 可以交给自动更新 | 只限小版本安全更新 |
核心大版本 | 手动,先在测试环境 | 插件和主题要跟着适配 |
不要在周五下午、大促前一天、刚上线第二天更新。不是因为更新一定出问题,是出问题时你没人没时间处理。
1. 导出当前版本清单
mkdir -p ~/backup
wp plugin list --format=csv > ~/backup/plugins-$(date +%F).csv
wp theme list --format=csv > ~/backup/themes-$(date +%F).csv
wp core version这份清单是回滚时的「目标版本表」。没有它,出问题时你只能靠记忆猜旧版本号。
2. 完整备份,文件和数据库都要
wp db export ~/backup/db-$(date +%F-%H%M).sql
tar -czf ~/backup/files-$(date +%F-%H%M).tar.gz -C /var/www html备份必须存到另一台机器或对象存储上。备份和站点放在同一台机器,等于没有备份。
3. 验证备份能恢复
至少确认 sql 文件能导入一个空库、tar 包能解开、里面文件数对得上。没验证过的备份不算备份,只算一个占空间的压缩文件。
4. 看 changelog,重点找三类词
出现前两类,就按「大版本」对待,不要顺手更。
5. 有测试环境就在测试环境先更一遍
完整复制一份站点到子目录或临时域名,改本地 hosts 访问。没有测试环境的话,这一步至少要做到「先在备份恢复出来的那份上试」。
6. 选时间,留人
低流量时段,更新后至少留两小时有人能处理。夜里更新但没人看日志,等于把问题留到第二天早上。
# 看有哪些可更新
wp plugin list --update=available
wp theme list --update=available
wp core check-update顺序建议:
wp plugin update <slug>
wp theme update <slug>
wp core update每更一个,立刻跑下面的冒烟测试,通过了再更下一个。 全部更完再一起测的话,出问题你不知道是哪个引起的,只能一个一个退回排查。
邮件这一项最容易漏。 表单插件更新后 SMTP 配置被重置的情况不少见,而「提交成功」的提示是前端给的,跟邮件到底发没发出去没关系。只看提示不看收件箱,等于没测。
现象 | 大概率是 |
|---|---|
整站白屏 / 500 | PHP 致命错误,插件或主题与新版本不兼容 |
前台错位、样式乱 | 主题,或缓存插件的 CSS/JS 合并压缩 |
表单提示成功但收不到信 | 表单插件,或 SMTP 配置被重置 |
结账报错 | 电商插件或支付相关插件 |
前台正常但后台进不去 | 后台相关的插件 |
不然你回滚完,它过一会儿自己又更回去。
wp plugin auto-updates disable <slug>
wp plugin auto-updates status单个插件回到指定版本:
wp plugin install <slug> --version=<旧版本号> --force
wp plugin activate <slug>--force 是必须的。不加的话,检测到已经装了新版会直接跳过,你以为回滚了其实没有。旧版本号从第二步导出的 csv 清单里查。
主题同理:
wp theme install <slug> --version=<旧版本号> --force
wp theme activate <slug>这是回滚里最容易出事的点。如果新版本跑过数据库升级(加了表、改了字段、写了新的 option),只回滚代码会变成「旧代码 + 新表结构」,轻则报错,重则写坏数据。
判断方法:查 changelog 有没有提数据库变更,或者更新时后台有没有出现「需要升级数据库」的提示。
# 1. 进维护模式,先别再让人访问
wp maintenance-mode activate
# 2. 恢复数据库
wp db import ~/backup/db-<时间点>.sql
# 3. 恢复文件
tar -xzf ~/backup/files-<时间点>.tar.gz -C /var/www
# 4. 清缓存:页面缓存、对象缓存、CDN 都清
# 5. 退出维护模式
wp maintenance-mode deactivate第 4 步经常被跳过。 清完缓存再看效果,不然你会以为回滚没成功,然后再折腾一遍,把本来没坏的东西弄坏。
回滚完成后,把冒烟测试清单再跑一遍。只确认「首页能打开」是不够的,表单和结账往往还是坏的。
自动更新的问题不是「会不会出错」,是「出错时你在不在」。所以按插件分别设:
核心小版本安全更新:可以开
wp config set WP_AUTO_UPDATE_CORE minor插件:默认全关,只对个别单独开
wp plugin auto-updates disable <slug>
wp plugin auto-updates enable <slug>
wp plugin auto-updates status判断标准很简单:这个插件出问题时,会不会影响收询盘、影响成交、动到已有数据。会,就不要开自动更新。
主题:不要开自动更新。 主题换版会同时改前台模板和样式,影响面比任何单个插件都大。
更新前:导版本清单 → 备份文件和数据库 → 验证备份能恢复 → 看 changelog 找数据库变更 → 挑低流量时段
更新中:核心 → 后台工具类插件 → 前台插件 → 电商插件 → 主题。一次一个,每次跑冒烟测试
出问题时:停自动更新 → 定位在哪一层 → 单插件回滚 → 判断有没有数据库变更 → 必要时整站回滚 → 清缓存 → 再跑一遍冒烟测试
更新后:观察 24 小时,看 PHP 错误日志和表单邮件有没有异常。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。