本文约 4,010 字,预计阅读 11 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:把重复点击变成一行命令
后台能做的事,WP-CLI 基本都能做;后台做不到的事(比如批量改一千篇文章的作者、后台进不去时禁用插件),它也能做。
本文不求全,只整理真实运维中高频使用的命令,按场景分组。建议收藏,用到时直接翻。
原理分析:命令的通用规则
所有命令都可以加三个全局参数:
--path=/var/www/xxx # 指定 WordPress 目录
--allow-root # 允许 root 执行(不推荐,但 VPS 上常见)
--skip-plugins --skip-themes # 不加载插件/主题,用于排除插件干扰排障
最后一组尤其重要:当站点因插件冲突白屏时,用 --skip-plugins 执行 WP-CLI,WordPress 会跳过所有插件加载,你就能安全地禁用问题插件。
保姆级实操:按场景分类的命令清单
一、查看状态与诊断
wp core version # 核心版本
wp core check-update # 是否有更新
wp plugin list # 插件列表及状态(含 update 列)
wp theme list # 主题列表
wp option get home # 查看站点地址
wp option get siteurl # 查看 WordPress 地址
wp db check # 检查数据库表
wp db size --all-tables # 各表大小,找膨胀的表
wp cron event list # 查看定时任务
二、更新核心、插件、主题
wp core update # 更新核心(小版本)
wp core update --version=6.6.2 --force # 指定版本
wp core update-db # 更新数据库结构
wp plugin update --all # 更新全部插件
wp plugin update wordpress-seo # 更新单个
wp plugin update --all --exclude=elementor # 排除某个
wp theme update --all
wp language core update # 更新翻译
三、缓存与临时数据清理
wp cache flush # 清对象缓存
wp transient delete --all # 删全部瞬态(缓存插件残留常用)
wp transient delete-expired # 只删过期
wp rewrite flush # 刷新固定链接规则(换主题/改结构后必做)
wp option delete _transient_doing_cron
四、媒体与缩略图
wp media regenerate --yes # 重建全部缩略图
wp media regenerate --image-size=thumbnail # 只重建某尺寸
wp media image-size # 查看已注册尺寸
wp media import /path/to/img.jpg --title="示例" --alt="说明"
换主题后缩略图尺寸不对、图片裁剪变形,第一条命令就能解决。大图库站点执行时间较长,建议配合 --yes 在非高峰跑。
五、用户与权限
wp user list --fields=ID,user_login,roles
wp user create editor1 editor@example.com --role=editor --user_pass='密码'
wp user set-role 3 administrator # 改角色
wp user update 1 --user_pass='新密码' # 重设密码(忘记密码时救急)
wp user delete 5 --reassign=1 # 删用户并把内容转给 ID 1
wp cap list administrator # 查看角色能力
六、内容批量操作
wp post list --post_type=post --posts_per_page=20 --fields=ID,post_title,post_status
wp post delete 123 124 --force # 强制删除(跳过回收站)
wp post update 123 --post_status=publish
wp post create --post_type=page --post_title='关于我们' --post_status=publish
wp term list category --fields=term_id,name,slug
wp search-replace '旧内容' '新内容' wp_posts --dry-run # 先干跑
七、数据库操作
wp db export backup.sql # 导出
wp db export --tables=wp_posts,wp_postmeta # 只导部分表
wp db import backup.sql # 导入
wp db optimize # 优化表(等同 OPTIMIZE TABLE)
wp db repair # 修复表
wp db query "SELECT COUNT(*) FROM wp_posts WHERE post_status='draft';"
八、站点地址与配置
wp option update home 'https://newdomain.com'
wp option update siteurl 'https://newdomain.com'
wp config set WP_MEMORY_LIMIT 256M --raw
wp config set DISABLE_WP_CRON true --raw --type=constant
--raw 表示不加引号(用于布尔和整数),--type=constant 表示写入 define() 而不是 option。
九、应急排障组合(后台进不去时)
# 1. 跳过插件加载,列出插件状态
wp plugin list --skip-plugins
# 2. 禁用可疑插件
wp plugin deactivate 问题插件 --skip-plugins
# 3. 切回默认主题
wp theme activate twentytwentyfour --skip-themes
# 4. 关闭调试输出并清缓存
wp config set WP_DEBUG false --raw --type=constant
wp cache flush
常见踩坑与失败案例
wp media regenerate跑一半超时 —— 图片太多。分批跑:wp media regenerate --yes配合screen或nohup,并调大memory_limit。wp plugin update --all后站点崩了 —— 永远先备份:wp db export before-update.sql,出问题用wp plugin update 插件 --version=旧版本回滚。wp search-replace破坏序列化数据 —— 一定要加--precise(较新版本默认行为)并先--dry-run看影响行数。- 案例:运维在 root 下执行
wp db optimize,之后站点报权限错误。原因是操作过程中生成了属主为 root 的临时文件。始终用sudo -u www-data wp ...执行。 wp cron event list为空 —— WP-Cron 关闭或站点从未被访问。改用系统 cron 触发wp-cron.php。
总结
不需要背下全部命令,记住三组就够覆盖 90% 场景:诊断组(core version / plugin list / db size / cron event list)、修复组(cache flush / transient delete --all / rewrite flush / media regenerate)、应急组(--skip-plugins + plugin deactivate + theme activate)。把这三组写成自己的备忘脚本,日常运维和事故处理都能快一大截。
