如何通过WP-CLI实现Wordfence等插件的自动化配置?
批量导入WordPress插件设置的解决方案
通用前提
先在一个模板站点上配置好所有插件的理想设置,导出这些配置后,通过wp-cli配合Shell脚本批量同步到其他20个站点即可。
1. Wordfence 设置同步
Wordfence的配置全部存在wp_options表中,前缀为wf_:
- 导出模板站点设置:
wp option list --search='wf_' --format=json > wordfence-settings.json - 批量导入到目标站点:
在Shell脚本中遍历站点目录,执行以下命令:# 清空目标站点现有Wordfence配置(可选,避免冲突) wp option list --search='wf_' --format=csv | awk -F',' '{print $1}' | xargs wp option delete 2>/dev/null # 导入预存配置 wp option patch insert --format=json < wordfence-settings.json # 优化配置生效 wp wordfence optimize
2. LiteSpeed Cache 设置同步
LiteSpeed Cache的配置分两部分:wp_options表中前缀为litespeed_的选项,以及自定义表wp_litespeed_rules(存储缓存规则):
- 导出模板站点设置:
# 导出选项表配置 wp option list --search='litespeed_' --format=json > litespeed-settings.json # 导出缓存规则表(如果有配置) wp db export --tables=wp_litespeed_rules litespeed-rules.sql - 批量导入到目标站点:
# 清空现有LiteSpeed配置 wp option list --search='litespeed_' --format=csv | awk -F',' '{print $1}' | xargs wp option delete 2>/dev/null # 导入选项配置 wp option patch insert --format=json < litespeed-settings.json # 导入缓存规则(如果有) wp db import litespeed-rules.sql 2>/dev/null # 刷新缓存确保生效 wp litespeed purge all
3. Woody Snippets 设置同步
Woody Snippets的配置包含两部分:wp_options表中的wbcr_php_snippets_settings全局选项,以及wp_posts表中类型为wbcr_php_snippet的自定义文章(对应每个代码片段):
- 导出模板站点设置:
# 导出全局设置 wp option get wbcr_php_snippets_settings --format=json > woody-settings.json # 导出所有代码片段为XML wp export --post_type=wbcr_php_snippet --filename=woody-snippets.xml - 批量导入到目标站点:
# 更新全局设置 wp option set wbcr_php_snippets_settings "$(cat woody-settings.json)" --format=json # 导入代码片段 wp import woody-snippets.xml --authors=skip --quiet # 刷新重写规则确保片段加载正常 wp rewrite flush
整合进Shell脚本的示例
假设所有站点都存放在/var/www/sites/目录下,每个站点对应一个子目录:
#!/bin/bash # 模板配置文件路径 WF_SETTINGS="/path/to/wordfence-settings.json" LS_SETTINGS="/path/to/litespeed-settings.json" LS_RULES="/path/to/litespeed-rules.sql" WOODY_SETTINGS="/path/to/woody-settings.json" WOODY_SNIPPETS="/path/to/woody-snippets.xml" # 遍历所有站点 for site_dir in /var/www/sites/*; do cd "$site_dir" echo "Processing site: $(basename "$site_dir")" # 同步Wordfence wp option list --search='wf_' --format=csv | awk -F',' '{print $1}' | xargs wp option delete 2>/dev/null wp option patch insert --format=json < "$WF_SETTINGS" wp wordfence optimize # 同步LiteSpeed Cache wp option list --search='litespeed_' --format=csv | awk -F',' '{print $1}' | xargs wp option delete 2>/dev/null wp option patch insert --format=json < "$LS_SETTINGS" wp db import "$LS_RULES" 2>/dev/null wp litespeed purge all # 同步Woody Snippets wp option set wbcr_php_snippets_settings "$(cat "$WOODY_SETTINGS")" --format=json wp import "$WOODY_SNIPPETS" --authors=skip --quiet wp rewrite flush echo "Completed site: $(basename "$site_dir")" echo "-------------------------" done
注意事项
- 确保所有站点的
wp-cli已正确配置,能正常连接数据库。 - 操作前先在测试站点验证配置导入效果,避免破坏现有站点数据。
- 若遇到部分配置导入后不生效,检查模板站点与目标站点的环境一致性(如域名、站点路径),必要时手动调整导出的JSON内容。
内容的提问来源于stack exchange,提问作者Finn Österreicher
相关产品推荐
相关产品推荐

